0

我是 XSLT 的新手,所以如果这是一个菜鸟问题,请原谅。

假设我有这个 XML 文档(一个带有 2 个 private_rates 的酒店元素):

<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 会是什么样子?任何帮助将不胜感激!谢谢。

4

2 回答 2

2

作为 Jollymorphic 解决方案的替代方案,我的偏好是

<xsl:template match="private_rates">
      <hotel>
         <xsl:copy-of select="."/>
      </hotel>
</xsl:template>
于 2013-03-13T08:17:21.893 回答
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用法假定您的样式表中还有一个标识模板,该模板将复制与其他模板(例如此模板)没有更具体匹配的源内容。

顺便说一句,在元素和属性名称中不赞成使用下划线。

于 2013-03-13T04:15:23.147 回答