【问题标题】:How to split an XML tag using XSLT如何使用 XSLT 拆分 XML 标记
【发布时间】:2013-02-16 08:47:56
【问题描述】:

我有一个类似这样的源 XML(如下所示),其中有一个 PR 标签,在该标签下可以有多个 Pr Line 标签,但在最终的 XML 中我想要源 XML(包含多个 Pr Line 标签)如目标xml所示进行拆分。

来源:

  <PRSet>
   <PR>
    <PRNUM>100</PRNUM> 
    <VENDOR>XYZ LLC</VENDOR> 
    <PRLINE>
      <PRLINENUM>101</PRLINENUM>
      <DESCRIPTION>Burner Lamp</DESCRIPTION> 
    </PRLINE>

    <PRLINE>
      <PRLINENUM>102</PRLINENUM>
      <DESCRIPTION>Stove</DESCRIPTION>
    </PRLINE>
   </PR>
  </PRSet>

当单个 PR 标签中有多个 PRLine 标签时,最终的 xml 应如下所示:

目标:

<PRSet>
 <PR>
  <PRNUM>100</PRNUM> 
  <VENDOR>XYZ LLC</VENDOR> 
 <PRLINE>
  <PRLINENUM>101</PRLINENUM>
  <DESCRIPTION>Burner Lamp</DESCRIPTION> 
 </PRLINE>
</PR>

 <PR>
  <PRNUM>100</PRNUM> 
  <VENDOR>XYZ LLC</VENDOR> 
 <PRLINE>
  <PRLINENUM>102</PRLINENUM>
  <DESCRIPTION>Stove</DESCRIPTION>
 </PRLINE>
</PR>

任何人都可以提供如何使用 XSLT 转换实现此目的的解决方案。 非常感谢。

【问题讨论】:

    标签: xslt


    【解决方案1】:

    您描述的转换可以通过以下 XSLT 样式表实现:

    <xsl:stylesheet version="1.0"
                    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
        <xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
    
        <xsl:template match="PRSet">
            <xsl:copy>
                <xsl:apply-templates select="PR/PRLINE" />
            </xsl:copy>
        </xsl:template>
    
        <xsl:template match="PRLINE">
            <PR>
                <xsl:copy-of select="../PRNUM|../VENDOR|." />
            </PR>
        </xsl:template>
    
    </xsl:stylesheet>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      相关资源
      最近更新 更多