<chapter>
<concept>
<title>*********************</title>
.
.
</concept>
<sections>
<title>*******************</title>
</chapter>
在上述结构中,我想从<concept><title>
或<sections><title>
检索文字。即使用一个xpath条件,我需要以下条件的值。
1)如果<concept><title>
没有出现,那么<sections><title>
。副反面也.. ..
2)标题都可用,然后我想考虑nearst节点值。即在上述结构中,“<sections><title>
”是最新节点。
答案 0 :(得分:1)
您想要两个中的“最近”(第一个):
(/*/*[self::concept or self::sections]/title)[1]
如果您想要“最新”(最后),请使用:
(/*/*[self::concept or self::sections]/title)[last()]
基于XSLT的验证:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:copy-of select=
"(/*/*[self::concept or self::sections]/title)[1]"/>
===============
<xsl:copy-of select=
"(/*/*[self::concept or self::sections]/title)[last()]"/>
</xsl:template>
</xsl:stylesheet>
对以下XML文档应用此转换时:
<chapter>
<concept>
<title>*********Title 1************</title>
.
.
</concept>
<sections>
<title>**********Title 2*********</title>
</sections>
</chapter>
评估两个XPath表达式并将其结果复制到输出中:
<title>*********Title 1************</title>
===============
<title>**********Title 2*********</title>
答案 1 :(得分:0)
换句话说,您只想要concept/title
下的最后sections/title
或chapter
?这个XPath应该这样做(假设当前上下文是chapter
:
(concept/title | sections/title)[last()]