在XSL上解析具有相同名称的子元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在XSL上解析具有相同名称的子元素相关的知识,希望对你有一定的参考价值。

我想知道是否有一种方法可以使用XSL在父元素上传输具有相同元素名称的所有子元素。

例如:

这是我的XML代码

<all>
    <data>
        <location>
            <coordinates>-80.326897</coordinates>
            <coordinates>25.586399</coordinates>
        </location>
    </data>
    <status>success</status>
</all>

我正在解析它:

<xsl:for-each select="/all/data">
<xsl:value-of select="location/coordinates"/></b></center></td>
<xsl:value-of select="location/coordinates"/></b></center></td>

显然,我想获得纬度和经度的值,但当然,我得到两者的相同值(-80.32)。

如何区分纬度和经度?

答案

不是XSL但是因为你标记了python,我建议你使用BeautifulSoup

from bs4 import BeautifulSoup

c = """
<all>
    <data>
        <location>
            <coordinates>-80.326897</coordinates>
            <coordinates>25.586399</coordinates>
        </location>
    </data>
    <status>success</status>
</all>
"""

soup = BeautifulSoup(c, 'lxml')
selection = soup.select('location coordinates')
selection = [float(e.text) for e in selection]

>>> selection
[-80.326897, 25.586399]

如果你有更多的对,你可以使用odd和even来分隔它们。或者使用2阶段过程,首先选择location,它将返回位置标签,然后为每个返回一个(x,y)对。

另一答案

只需使用索引:

<xsl:value-of select="location/coordinates[1]"/>
<xsl:value-of select="location/coordinates[2]"/>
另一答案

既然你已将其标记为python,我认为你使用的是libxslt,即XSLT 1.0。在XSLT 1.0中,指令:

<xsl:value-of select="location/coordinates"/>

从第一个coordinates中的第一个location获取值。


要从第二个coordinates获取值,您可以使用:

<xsl:value-of select="location/coordinates[2]"/>

或者只是改变你的:

<xsl:for-each select="/all/data">

至:

<xsl:for-each select="/all/data/location/coordinates">

(这假设在XML文档中只会出现一次datalocation)。

另一答案

只需添加另一级循环,例如:

<xsl:for-each select="/all/data">
  <div>
    <xsl:for-each select="location/coordinates">
       <b><xsl:value-of select="."/></b>
    </xsl:for-each>
  </div>
</xsl:for-each>

请注意,如果它比这更复杂,那么您应该考虑使用模板规则。

以上是关于在XSL上解析具有相同名称的子元素的主要内容,如果未能解决你的问题,请参考以下文章

使用 SAX 解析器,如何解析具有相同名称标签但元素不同的 xml 文件?

如何双击列表中具有相同 ID、索引和名称的元素

使用 SimpleXML 和 Java 具有相同名称的多个元素

XPath 获取除具有特定名称的子元素之外的所有子元素?

有没有办法使用 xsl 更改 xml 中元素的名称?

我需要更多帮助来遍历 XML 文档