Xslt 提取xml元素和子节点值

Xslt 提取xml元素和子节点值,xslt,xml-parsing,Xslt,Xml Parsing,我有一个以下类型的xml `<ns:response> <ns:transport_car> <ns:transport_model> abc</ns:transport_model> <ns:transport_model> xyz</ns:transport_model> </ns:transport_car> </ns:response>` 这是怎么回事 <xsl

我有一个以下类型的xml

`<ns:response>
 <ns:transport_car>
  <ns:transport_model> abc</ns:transport_model>
  <ns:transport_model> xyz</ns:transport_model>
   </ns:transport_car>
    </ns:response>`
这是怎么回事

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:ns="something">
  <xsl:output method="text" indent="yes"/>

  <xsl:template match="/*">
    <xsl:apply-templates
      select="*[substring-after(local-name(), 'transport_') != '']" />
  </xsl:template>

  <xsl:template match="/*/*">
    <xsl:value-of
      select="concat('Transport type= ', 
                     substring-after(local-name(), 'transport_'),
                     '&#xA;Model name:&#xA;')"/>
    <xsl:apply-templates select="ns:transport_model" />
  </xsl:template>

  <xsl:template match="ns:transport_model">
    <xsl:value-of select="concat(normalize-space(), ' ')"/>
  </xsl:template>
</xsl:stylesheet>
这是怎么回事

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:ns="something">
  <xsl:output method="text" indent="yes"/>

  <xsl:template match="/*">
    <xsl:apply-templates
      select="*[substring-after(local-name(), 'transport_') != '']" />
  </xsl:template>

  <xsl:template match="/*/*">
    <xsl:value-of
      select="concat('Transport type= ', 
                     substring-after(local-name(), 'transport_'),
                     '&#xA;Model name:&#xA;')"/>
    <xsl:apply-templates select="ns:transport_model" />
  </xsl:template>

  <xsl:template match="ns:transport_model">
    <xsl:value-of select="concat(normalize-space(), ' ')"/>
  </xsl:template>
</xsl:stylesheet>

此转换

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:ns="some:ns">
 <xsl:output method="text"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="/*/*[starts-with(local-name(), 'transport_')]">
  <xsl:text>Transport type= </xsl:text>
  <xsl:value-of select="substring-after(local-name(), 'transport_')"/>
  <xsl:apply-templates/>
 </xsl:template>

 <xsl:template match="ns:transport_model[1]">
Model name:
<xsl:value-of select="normalize-space()"/>
 </xsl:template>
</xsl:stylesheet>

此转换

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:ns="some:ns">
 <xsl:output method="text"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="/*/*[starts-with(local-name(), 'transport_')]">
  <xsl:text>Transport type= </xsl:text>
  <xsl:value-of select="substring-after(local-name(), 'transport_')"/>
  <xsl:apply-templates/>
 </xsl:template>

 <xsl:template match="ns:transport_model[1]">
Model name:
<xsl:value-of select="normalize-space()"/>
 </xsl:template>
</xsl:stylesheet>
<ns:response xmlns:ns="some:ns">
    <ns:transport_car>
        <ns:transport_model> abc</ns:transport_model>
        <ns:transport_model> xyz</ns:transport_model>
    </ns:transport_car>
</ns:response>
Transport type= car
Model name:
abc xyz