在html中我有一个链接:
<a href="http://maps.apple.com/?ll=-23.590877,-46.689397&address=JK%20Iguatemi%20Avenida%20Presidente%20Juscelino%20Kubitschek,%202041,%20Itaim%20Bibi,%20São%20Paulo%20-%20SP,%2004543-011,%20Brésil" class="setItineraire">Discover</a>
如何从此网址获取lat和long(-23.590877和-46.689397)并将其分配给元素
<latitude><xsl:value-of select="" /></latitude>
<longitude><xsl:value-of select="" /></longitude>
这是我第一次遇到这种情况。
由于
答案 0 :(得分:1)
假设您的HTML也是格式良好的XML(因此&
个字符在未解析的文本中转义为&
,那么如果您使用的是XSLT 1.0,则需要执行此操作一些字符串操作。
首先从href
属性中提取查询字符串。
<xsl:variable name="qs" select="concat('&', substring-after(@href, '?'), '&')" />
注意,我在字符串的开头和结尾添加&
,以便更容易在下一位提取参数。
要提取ll
参数的值,您可以执行此操作(额外的&符号确保它只找到ll=1,2
而不是all=1,2
。
<xsl:variable name="ll" select="substring-before(substring-after($qs, '&ll='), '&')" />
这应该返回“-23.590877,-46.689397”,以获得纬度(或经度),然后你可以这样做
<latitude><xsl:value-of select="substring-before($ll, ',')" /></latitude>
试试这个模板
<xsl:template match="a">
<xsl:variable name="qs" select="concat('&', substring-after(@href, '?'), '&')" />
<xsl:variable name="ll" select="substring-before(substring-after($qs, '&ll='), '&')" />
<position>
<latitude><xsl:value-of select="substring-before($ll, ',')" /></latitude>
<longitude><xsl:value-of select="substring-after($ll, ',')" /></longitude>
</position>
</xsl:template>
请注意,如果您使用的是XSLT 2.0,则可以使用tokenize
函数来简化操作
<xsl:variable name="ll" select="tokenize(substring-after(@href, '?'), '&')[starts-with(., 'll=')]" />