XSLT 中的分割坐标
Split Coordinates in XSLT
我有一个 XML 坐标节点,其中包含完全地理定位的 lat/long 组合。但是在新系统上,它必须作为单独的节点发送。 XMl 在发送之前用 XSLT 进行了转换,所以我想知道如何有效地将它分成组件部分。
XML节点
<coordinates>-3.166610, 51.461231</coordinates>
我需要变身为:
<latitude>-3.166610</latitude>
<longitude>51.461231</longitude>
谢谢。哦,应该提到它的XSLT 1.0
正如 Ian 评论的那样,substring-before
和 substring-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>
我有一个 XML 坐标节点,其中包含完全地理定位的 lat/long 组合。但是在新系统上,它必须作为单独的节点发送。 XMl 在发送之前用 XSLT 进行了转换,所以我想知道如何有效地将它分成组件部分。
XML节点
<coordinates>-3.166610, 51.461231</coordinates>
我需要变身为:
<latitude>-3.166610</latitude>
<longitude>51.461231</longitude>
谢谢。哦,应该提到它的XSLT 1.0
正如 Ian 评论的那样,substring-before
和 substring-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>