我是XSLT的新手,请原谅我这是否是一个noob问题。
假设我有这个XML文档(一个带有2个private_rates的hotel元素):
<hotel>
<private_rates>
<private_rate>
<id>1</id>
</private_rate>
<private_rate>
<id>2</id>
</private_rate>
</private_rates>
</hotel>
有没有办法使用XSLT将其转换为2个酒店元素,每个元素都有一个私人费率?
<hotel>
<private_rates>
<private_rate>
<id>1</id>
</private_rate>
</private_rates>
</hotel>
<hotel>
<private_rates>
<private_rate>
<id>2</id>
</private_rate>
</private_rates>
</hotel>
XSLT看起来如何?任何帮助将不胜感激!感谢。
答案 0 :(得分:2)
作为Jollymorphic解决方案的替代方案,我的偏好是
<xsl:template match="private_rates">
<hotel>
<xsl:copy-of select="."/>
</hotel>
</xsl:template>
答案 1 :(得分:0)
由于合法的XML文档必须包含一个包含文档元素的文档,因此我认为这一系列的酒店内容正在进行中。话虽这么说,怎么样:
<xsl:template match="hotel">
<xsl:for-each select="private_rates/private_rate">
<hotel>
<private_rates>
<xsl:copy>
<xsl:apply-templates />
</xsl:copy>
</private_rates>
</hotel>
</xsl:for-each>
</xsl:template>
此处的apply-templates
用法假定您的样式表中还有一个identity template,它将复制与其他模板(例如此模板)不具体匹配的源内容。
顺便提一下,下划线在元素和属性名称中不受欢迎。