Xml 正在选择父级的前一个同级的ID
我对XSLT比较陌生,发现前面的兄弟::非常痛苦 使用一个非常简单的XML示例:Xml 正在选择父级的前一个同级的ID,xml,xslt,xpath,Xml,Xslt,Xpath,我对XSLT比较陌生,发现前面的兄弟::非常痛苦 使用一个非常简单的XML示例: <month> <day id="1">Day one was a lovely day</day> <day id="2">Day two was balls</day> <day id="3">Day three was Wednesday</day> </month> 我希望每天都能将一些
<month>
<day id="1">Day one was a lovely day</day>
<day id="2">Day two was balls</day>
<day id="3">Day three was Wednesday</day>
</month>
我希望每天都能将一些基本XSLT输出到一个新文件中:这没问题:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="/month">
<xsl:for-each select="day">
<xsl:result-document href="output/day-{@id}/index.html">
<xsl:call-template name="page" />
</xsl:result-document>
</xsl:for-each>
</xsl:template>
<xsl:template name="page">
<html>
<head>
<title>This is <xsl:value-of select="id" /></title>
</head>
<body>
<h1>Day of new <xsl:value-of select="@id" /></h1>
<p><xsl:value-of select="." /></p>
<!--PROBLEM HERE:: -->
Previous: <xsl:value-of select="" />
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我的问题是我在这里写的问题的最后一部分。我想知道前一天的身份。我似乎无法获得正确的选择值。我已经尝试过祖先::和../previous sibling::day[1]的所有组合,我可以在任何地方找到提到的。请帮忙 使用以下命令:
<xsl:value-of select="preceding-sibling::day[1]/@id"/>
只是第一个节点没有任何值,因为没有前一个同级日。我没有检查此代码中是否有前一个节点,但假设它至少能在第2天和第3天工作,您不需要在月份进行匹配,因为您所做的只是处理它的子项,XSLT的内置模板规则将自动完成这项工作。删除for each on day和模板匹配on day,即。另外,如果我是你,我会将调用的模板提升到day模板中,这样就可以清楚地知道代码是在哪里执行的,而不必弄清楚它是从哪里调用的。现在可能很容易,但如果你有一个更大的样式表,就不会了。谢谢。。。出于某种原因,我的工作假设这是在当时的背景下。。。而不是在该节点本身上操作。@user2672537如果它解决了您的问题,请不要忘记。谢谢