我正在学习xslt,所以请原谅如果下面的xml没有意义。这是我的样本xml。
<root>
<note>
<to>
<test>text</test>
<test1>ABC</test1>
</to>
<to>
<test>text</test>
<test1>content1</test1>
</to>
<to>
<test>text</test>
<test1>ABC</test1>
</to>
<to>
<test>text</test>
<test1>content1</test1>
</to>
</note>
<nodeabc>
<to>
<test>text</test>
<test1>ABC</test1>
</to>
</nodeabc>
</root>
当尝试使用text = content1的节点“test1”时,我尝试更改第一个节点“test”的文本。
例如,out put应该是。
<root>
<note>
<to>
<test>text</test>
<test1>ABC</test1>
</to>
<to>
<test>text</test>
<test1>REPLACED</test1>
</to>
<to>
<test>text</test>
<test1>ABC</test1>
</to>
<to>
<test>text</test>
<test1>content1</test1>
</to>
</note>
<nodeabc>
<to>
<test>text</test>
<test1>ABC</test1>
</to>
</nodeabc>
</root>
我尝试了几个xslt,但似乎没有任何效果。它取代了节点“test”的所有文本出现,其中对应的“test1”具有值content1。
xslt
的一部分<xsl:template match="to/test[../test1='content1'][1]/text()">REPLACED
</xsl:template >
请指导可以解决的问题。
提前致谢。
答案 0 :(得分:1)
您当前表达式的问题在于它匹配测试元素,这些元素是到元素的第一个子元素。在您的情况下,您确实希望匹配第一个到元素。
试试这个表达
<xsl:template match="to[test1='content1'][1]/test/text()">REPLACED
</xsl:template>