2011-05-28 80 views
1

我有一个 “坏的XML结构” 文件:如何从xml中获取xml文本?

<cars> 
    <car>Toyota 
     <country>Japan</coutry> 
     .... 
    </car> 
</cars> 

如何正确地得到正确的字使用XPath(丰田)? 我试过了:

<xsl:value-of select = "cars/car/text()"/>

它的工作原理,但我认为有更合适的方法。 谢谢。

+0

问得好,+1时也是如此。查看我的答案以获得两种替代解决方案和建议 – 2011-05-28 23:26:15

回答

3

使用

/cars/car/text()[1] 

,或者如果你要放弃大部分的文本节点空白上述选择,使用范围:

normalize-space(/cars/car/text()[1]) 

请注意,尽管在XSLT 1.0 <xsl:value-of>只输出由select属性中表达式选择的节点集的第一个节点的字符串值,<xsl:copy-of>将输出所有节点集中的节点。在XSLT 2.0中,即使<xsl:value-of>也输出节点集中的所有节点。

因此,对于便携性,可升级性的目的,只是为了避免错误,最好是指定exactlyy节点从节点集是要输出 - 使用<xsl:value-of>

+0

感谢您的快速和详细的回复。 – vlad 2011-05-28 23:45:47

+0

@vlad:不客气。 – 2011-05-29 14:48:51