我正在编写一个 XSL 转换,我无法移动到根目录并访问每个内部的其他节点。
假设我在一个上下文中。我有一种情况,我必须去外部节点从那里获取一个值并返回到相同的上下文。
这是我的 XML 文件。
<xml version=1.0>
<abc>
<parts>
<part pno="10506">
<pname>Land Before Time I</pname>
<qoh>200</qoh>
<price>19.99</price>
<level>20</level>
</part>
…
</parts>
<orders>
<order ono="1022" takenBy="1001" customer="2222">
<receivedDate>1995-02-13</receivedDate>
<shippedDate>1995-02-20</shippedDate>
<items>
<item>
<partNumber>10601</partNumber>
<quantity>1</quantity>
</item>
<item>
<partNumber>10701</partNumber>
<quantity>1</quantity>
</item>
</items>
</order>
.....
</orders>
</abc>
我在 xsl:for-each 中的“item”标签内进行迭代,但我想进入“part”标签并获取一个值并返回到相同的上下文。
更详细地说:我正在填一张桌子。我的表有 4 列:
- partname:我必须
<part>
去取名字。(这是我卡住的地方) - 数量:对我来说这不是问题,因为它是 的子元素
<item>
。 - 价格:我面临同样的问题。
- 总:这很容易。
请帮助我从零件标签中获取零件名称和价格的值。
以下代码对我不起作用。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet>
<table>
<xsl:param name="param1" />
<xsl:variable name="temp" select ="name(/*)"/>
<xsl:for-each select=".//order[@ono=$param1]/items/item">
<tr>
<td> <xsl:value-of select="$temp//part[@pno=partNumber]/pname"/> </td>
<td> <xsl:value-of select="quantity"/> </td>
<td> <xsl:value-of select="$temp//part[@pno=partNumber]/price"/> </td>
<td> <xsl:value-of select="quantity*$temp//part[@pno=partNumber]/price"/> </td>
</tr>
</xsl:for-each>
</table>
<xsl:stylesheet>
我尝试使用谷歌搜索,但无法为我的问题找到确切的解决方案。我写的代码抛出了一些错误。我尝试将“temp”的选择值更改为 root(.),但它不起作用。
我只需要一个提示。我不需要答案。对我来说,一个提示就足够了。
在过去的 5 个小时里,我陷入了这个问题。请回复并帮助我。