我有一个类型
`<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以打印表单文本:
Transport type= car
Model name:
abc xyz
答案 0 :(得分:1)
此转化:
<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>
应用于提供的XML文档时:
<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
答案 1 :(得分:0)
这是怎么回事:
<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_'),
'
Model name:
')"/>
<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>
在样本输入上运行时(添加名称空间后),结果为:
Transport type= car
Model name:
abc xyz