使用XSLT对文档进行非规范化
我是XSLT新手,所以如果这是一个noob问题,请原谅 假设我有这个XML文档(一个hotel元素和两个private_rates):使用XSLT对文档进行非规范化,xslt,Xslt,我是XSLT新手,所以如果这是一个noob问题,请原谅 假设我有这个XML文档(一个hotel元素和两个private_rates): 1. 2. 有没有办法使用XSLT将其转换为两个酒店元素,每个元素都有一个私人费率 <hotel> <private_rates> <private_rate> <id>1</id> </private_rate> </private_rates
1.
2.
有没有办法使用XSLT将其转换为两个酒店元素,每个元素都有一个私人费率
<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>
1.
2.
这方面的XSLT是什么样子的?任何帮助都将不胜感激!谢谢。因为合法的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
用法假定您的样式表中也有一个模板,该模板将复制与其他模板(例如此模板)不匹配的源内容
顺便说一句,元素和属性名称中不允许使用下划线。作为Jollymorphic解决方案的替代方案,我的首选是
<xsl:template match="private_rates">
<hotel>
<xsl:copy-of select="."/>
</hotel>
</xsl:template>
我不知道谁不喜欢下划线。我不喜欢。@jollymorphic,在元素和属性名称中不喜欢下划线。
我不认为这是一个正确的观点,你能解释一下吗???@其他人:这只是一个旁白,纯粹是一个品味问题。我本应该说一些类似于“有些人,包括我自己,对它们表示不满,因为他们不必要地将编程语言中标识符名称的约束转换为XML,这是一个不同的世界。”关于XML命名约定的另一个StackOverflow问题可能值得一看(没有人建议使用下划线):我是XSLT新手,如果这是一个noob问题,请原谅。
这并不重要,只要你能告诉我们你到底尝试了什么。对还是错,不尝试一些东西,请别人帮助是不公平的。很高兴:)+1,我更喜欢这样,而不是像Jollymorphic的回答那样,对每一个不必要的,是的,这肯定更好+1.
<xsl:template match="private_rates">
<hotel>
<xsl:copy-of select="."/>
</hotel>
</xsl:template>