如果xml的格式为
<person>
<first>Thomas</first>
<last>Andrews</last>
<title>Developer</title>
</person>
我们可以将xslt作为:
<xsl:template match="person">
<xsl:value-of select='first'/><xsl:text>|</xsl:text>
<xsl:value-of select='last'/><xsl:text>|</xsl:text>
<xsl:value-of select='title'/><xsl:text>|</xsl:text>
</xsl:template>
使用xsltproc应用上述样式,我得到的输出将是:Thomas|Andrews|Developer
。
如何在没有特定属性名称时解析xml?例如下面的那个:
<Row>
<Data ss:Type="String">John</Data>
<Data ss:Type="Number">1</Data>
<Data ss:Type="String">4</Data>
<Data ss:Type="String">Smith</Data>
<Data ss:Type="String">US Dollar</Data>
<Data ss:Type="String">North America</Data>
</Row>
答案 0 :(得分:1)
您使用XML解析器解析XML。如果元素被称为“人”并且#34;那么这并不重要。或&#34;数据&#34;所以&#34;解析XML&#34;这不是你的问题。
xsltproc是您的XSLT处理器。 XSLT处理器的输入是解析的XML文档。如果元素名称没有描述内容(例如&#34;数据&#34;),那会是什么?与数据库表的列不同,XML元素确实有一个顺序,因此您可以使用输入的顺序,假设它在所有输入文档中保持不变。除此之外,我无法想出一种识别字符串的好方法,例如&#34; John&#34;作为一个人的名字。
如果您不必担心XML元素的名称,可能会有这个诀窍:
<xsl:template match="Row">
<xsl:for-each select="*">
<xsl:value-of select='.'/><xsl:text>|</xsl:text>