我有一个模板,显示gpx文件中的航点。目前,我可以将子元素添加到项目的唯一方法是使用模板。有没有办法可以在不使用单独模板的情况下获取子元素的值?所以不要这样做:
<xsl:attribute name="href">
<xsl:apply-templates select="gpx:link" />
</xsl:attribute>
我可以这样做:
<xsl:attribute name="href">
<xsl:value-of select="child@href" />
</xsl:attribute>
这是我用它的xml和xsl。
<wpt lat="00.00000000" lon="00.00000000">
<ele>600</ele>
<time>2015-02-16T06:12:27Z</time>
<name><![CDATA[Photo]]></name>
<link href="2015-02-16_01-12-27.jpg">
<text>2015-02-16_01-12-27.jpg</text>
</link>
<sat>0</sat>
</wpt>
<xsl:template name="wpt-circle">
<xsl:for-each select="gpx:wpt">
<circle stroke="black" stroke-width="3" fill="red" r="6">
<xsl:call-template name="latlonc">
<xsl:with-param name="lon" select="@lon"/>
<xsl:with-param name="lat" select="@lat"/>
</xsl:call-template>
<xsl:attribute name="text">
<xsl:apply-templates select="gpx:name" />
</xsl:attribute>
<xsl:attribute name="href">
<xsl:apply-templates select="gpx:link" />
</xsl:attribute>
</circle>
</xsl:for-each>
</xsl:template>
<xsl:template match="gpx:name">
<xsl:value-of select="." />
</xsl:template>
<xsl:template match="gpx:link">
<xsl:value-of select="@href" />
</xsl:template>
答案 0 :(得分:0)
他们正在寻找的语法是
<xsl:attribute name="href">
<xsl:value-of select="gpx:link/@href" />
</xsl:attribute>
您可以在此处的select参数中使用任何XPath表达式,而不仅仅是单个子节点。
事实上,你也可以这样做......
<circle stroke="black" stroke-width="3" fill="red" r="6" href="{gpx:link/@href}">
这称为Attribute Value Templates,花括号{}
表示要计算的表达式,而不是字面输出。