在下面的输入XML中,我想将entryRelationship
元素与代码10匹配(或者id,因为这些元素中的任何一个都是唯一的)。
<?xml version="1.0" encoding="UTF-8"?>
<Document>
<component>
<section>
<id test= "1"/>
<code code="10"/>
<entry>
<entryRelationship>
<time value="first time"/>
</entryRelationship>
</entry>
</section>
<section>
<id test= "2"/>
<code code="11"/>
<entry>
<entryRelationship>
<time value="second time"/>
</entryRelationship>
</entry>
</section>
</component>
</Document>
我可以写一个像xsl:template match = "Document/component/section/code[@code = '10']/entry/entryRelationship
这样的模板。但问题是,条目不是代码的子代,而是兄弟代码。我该如何解决这个问题?
答案 0 :(得分:4)
问题是,条目不是代码的子代,而是兄弟代码。我该如何解决这个问题?
谓词可以嵌套。
<xsl:template match="section[code[@code=10]]/entry/entryRelationship">
或者,没有嵌套:
<xsl:template match="section[code/@code=10]/entry/entryRelationship">
或者像这样
<xsl:template match="code[@code=10]/../entry/entryRelationship">
或者像这样
<xsl:template match="entryRelationship[../../code/@code=10]">
有很多方法可以表达这一点。
答案 1 :(得分:1)
问题是,条目不是代码的子代,而是兄弟代码。我该如何解决这个问题?
条目是带代码的部分的子代:因此尝试:
<xsl:template
match="Document/component/section[code/@code = '10']/entry/entryRelationship" />