我是XSLT的新手,这是我的XML:
<projects>
<project>
<number>1</number>
<title>Project X</title>
</project>
<project>
<number>2</number>
<title>Project Y</title>
</project>
<project>
<number>3</number>
<title>Project Z</title>
</project>
</projects>
Run Code Online (Sandbox Code Playgroud)
如果我有一个项目并希望得到它后面的兄弟,我该怎么做?
这段代码似乎对我不起作用:
/projects[title="Project X"]/following-sibling
Run Code Online (Sandbox Code Playgroud)
Dim*_*hev 28
这实际上是一个完全XPath的问题.
用途:
/*/project[title = 'Project X']/following-sibling::project[1]
Run Code Online (Sandbox Code Playgroud)
这将选择XML文档中顶部元素的子元素Project的任何Project元素的任何第一个跟随兄弟,并且其子元素中至少一个子元素的字符串值title是字符串"Project X".
基于XSLT的验证:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:copy-of select=
"/*/project[title = 'Project X']/following-sibling::project[1]"/>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
在提供的XML文档上应用此转换时:
<projects>
<project>
<number>1</number>
<title>Project X</title>
</project>
<project>
<number>2</number>
<title>Project Y</title>
</project>
<project>
<number>3</number>
<title>Project Z</title>
</project>
</projects>
Run Code Online (Sandbox Code Playgroud)
计算XPath表达式并将正确选择的元素复制到输出:
<project>
<number>2</number>
<title>Project Y</title>
</project>
Run Code Online (Sandbox Code Playgroud)