Как «взять текст узла» и поместить его как элемент данных в html - PullRequest
0 голосов
/ 14 июля 2020

У меня есть несколько таких записей:

<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

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Почему нельзя использовать шаблоны элементов буквального результата и значений атрибутов

<xsl:template match="tei:place">
  <span label="{@label}" data-boo-coordinates="{location/geo}">
    <xsl:apply-templates/>
  </span>
</xsl:template>
0 голосов
/ 14 июля 2020

Когда я использую следующее для выбора, это действительно работает:

  <xsl:attribute name="data-boo-coordinates">
    <xsl:value-of select="child::location/geo"/>
  </xsl:attribute>

контекст имеет значение, я думаю: - /

Может ли кто-нибудь намекнуть для более элегантного ответа?

...