如何使用xslt从xml获取具有空格和下一行的特定文本数据

时间:2016-01-13 20:32:25

标签: xslt xslt-2.0

我想从帧数据下面获取数据文本。

xml输入

<frame name="ENUMERATION LIST" type="" version="0">
 <data><![CDATA[0:  OFF
1:  ACCESSORY
2:  RUN
3:  START_Request]]></data>
 </frame>

我正在寻找下面给出的

      <ELEMENTS>
        <SW-BASE-TYPE>
          <SHORT-NAME>OFF</SHORT-NAME>
        </SW-BASE-TYPE>
        <SW-BASE-TYPE>
          <SHORT-NAME>ACCESSORY</SHORT-NAME>
        </SW-BASE-TYPE>
        <SW-BASE-TYPE>
          <SHORT-NAME>RUN</SHORT-NAME>
        </SW-BASE-TYPE>
        <SW-BASE-TYPE>
          <SHORT-NAME>START_Request</SHORT-NAME>
        </SW-BASE-TYPE>
       </ELEMENTS>

任何人都可以帮我解决这个问题吗

1 个答案:

答案 0 :(得分:1)

使用analyze-string

<xsl:stylesheet version="2.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output indent="yes"/>

<xsl:template match="data">
  <ELEMENTS>
    <xsl:analyze-string select="." regex="[0-9]+:\s*(.+)">
      <xsl:matching-substring>
        <SW-BASE-TYPE>
          <SHORT-NAME>
            <xsl:value-of select="regex-group(1)"/>
          </SHORT-NAME>
        </SW-BASE-TYPE>
      </xsl:matching-substring>
    </xsl:analyze-string>
  </ELEMENTS>
</xsl:template>

</xsl:stylesheet>