0
如果Orderitem
- >name
是“桌面”,然后从value
复制price
在listofspareparts
其中name
是“域spare2”在spareparts1
。XSLT复制子节点的值于母公司
输入:
<listoforders>
<Orderitem>
<name>Desktop</name>
<place>NZ</place>
<price>120</price>
<listofspareparts>
<spareparts1>
<name>spare1</name>
<value>140</value>
</spareparts1>
<spareparts1>
<name>spare2</name>
<value>130</value>
</spareparts1>
</listofspareparts>
</orderitem>
</listoforders>
输出应该是:
<listoforders>
<Orderitem>
<name>Desktop</name>
<place>NZ</place>
<price>130</price>
<listofspareparts>
<spareparts1>
<name>spare1</name>
<value>140</value>
</spareparts1>
<spareparts1>
<name>spare2</name>
<value>130</value>
</spareparts1>
</listofspareparts>
</orderitem>
</listoforders>
XSLT的1.0:
<xsl:stylesheet version="1.0" xmlns:xsl="w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements=""/>
<xsl:template match="node()|@">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="price[../Orderitem[name='Desktop']">
<xsl:copy-of select="value[../../listofspareparts/spareparts1[name='spare2']]" />
</xsl:template>
</xsl:stylesheet>
请让我知道我在这里失踪。
嗨,@ zx485谢谢,../是访问父元素,即上面的一个级别,../../是上面的两个级别,但'name'和'listofspareparts'是'价格的兄弟姐妹',请问节点位置如何评估?从上下文来看,如果我使用// vs。//是否有区别? – Krish
@Krish:标准轴是选择当前节点的子节点,所以如果你的当前节点是'price',表达式'name'就会被搜索为'price'的子节点。因此'../'选择_sibling_轴表示当前节点的所有兄弟(例如'name'和'listofspareparts')。 – zx485
关于你的第二个问题:''//选择文档中的所有节点(_relative to root_)和'.//'选择当前节点的所有子节点(相对于current_)。 – zx485