XSLT中的拆分坐标

时间:2015-02-11 15:15:26

标签: xml xslt xslt-1.0

我有一个坐标的XML节点,它包含完全地理定位的纬度/经度组合。但是,在新系统上,它必须作为单个节点发送。 XMl在发送之前用XSLT进行了变形,所以我想知道如何将它有效地分离到组件中。

XML节点

<coordinates>-3.166610, 51.461231</coordinates>

我需要转变为:

<latitude>-3.166610</latitude>
<longitude>51.461231</longitude>

感谢。哦,应该提一下它的XSLT 1.0

1 个答案:

答案 0 :(得分:2)

正如Ian评论的那样,substring-beforesubstring-after可以为您处理:

此XML:

<coordinates>-3.166610, 51.461231</coordinates>

给予此XSLT转换:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="coordinates">
    <xsl:copy>
      <latitude>
        <xsl:value-of select="normalize-space(substring-before(., ','))"/>
      </latitude>
      <longitude>
        <xsl:value-of select="normalize-space(substring-after(., ','))"/>
      </longitude>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

将生成所需的输出XML:

<?xml version="1.0" encoding="UTF-8"?>
<coordinates>
   <latitude>-3.166610</latitude>
   <longitude>51.461231</longitude>
</coordinates>