我有几个这样的条目:
<place label="Juan Fernandez"><placeName>Juan Fernandez</placeName><location><geo>-33.666667, -78.833333</geo></location></place>
我想将其转换为
<span label="Juan Fernandez" data-boo-coordinates ="-33.666667, -78.833333"> Juan Fernandez <location><geo>-33.666667, -78.833333</geo></location></span>
对于标签,没有大惊小怪:
<xsl:template match="tei:place">
<xsl:element name="span">
<xsl:attribute name="label">
<xsl:text>{@label}</xsl:text>
</xsl:attribute>
我认为类似的方法应该可以工作,并尝试了一些方法,下面将列出这些方法: 很自然,以下方法不起作用:
<xsl:attribute name="data-boo-coordinates">
<xsl:value-of select="geo"/>
</xsl:attribute>
但是,我认为这应该有效:
<xsl:attribute name="data-boo-coordinates">
<xsl:value-of select="place/location/geo"/>
</xsl:attribute>
放置元素的完整模板
<xsl:template match="tei:place">
<xsl:element name="span">
<xsl:attribute name="label">
<xsl:text>{@label}</xsl:text>
</xsl:attribute>
<xsl:attribute name="data-boo-coordinates">
<xsl:value-of select="*/location/geo"/>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
如您所见,我再次进行了更改,希望它可以通过使用<xsl:value-of>
来获取节点的文本。我在做某事吗?完全愚蠢吗?
一切顺利,谢谢您的宝贵时间, K
答案 0 :(得分:1)
为什么不能使用文字结果元素和属性值模板
<xsl:template match="tei:place">
<span label="{@label}" data-boo-coordinates="{location/geo}">
<xsl:apply-templates/>
</span>
</xsl:template>
答案 1 :(得分:0)
当我使用以下内容进行选择时,它实际上可以工作:
<xsl:attribute name="data-boo-coordinates">
<xsl:value-of select="child::location/geo"/>
</xsl:attribute>
上下文很重要,我想:-/
有人可以暗示一个更优雅的答案吗?