2015-02-18 14 views
0

У меня есть шаблон, который показывает путевые точки из файла gpx. В настоящее время единственным способом добавления дочерних элементов в элемент является использование шаблона. Есть ли способ, которым я могу получить значение дочерних элементов без использования отдельного шаблона? Так что вместо того, чтобы делать:Как включить дочерние элементы непосредственно в шаблон xsl

<xsl:attribute name="href"> 
    <xsl:apply-templates select="gpx:link" /> 
</xsl:attribute> 

я мог бы сделать что-то вроде:

<xsl:attribute name="href"> 
    <xsl:value-of select="[email protected]" /> 
</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

Они синтаксис вы ищете это

<xsl:attribute name="href"> 
    <xsl:value-of select="gpx:link/@href" /> 
</xsl:attribute> 

Вы можете использовать любое выражение XPath в выбранном параметре здесь, а не только один дочерний узел.

В самом деле, вы также можете сделать это ...

<circle stroke="black" stroke-width="3" fill="red" r="6" href="{gpx:link/@href}"> 

Это известно как Attribute Value Templates, с фигурными скобками {}, указывающими выражение для оценки, не выводятся буквально.

Смежные вопросы