получение значения атрибута из значения другого атрибута в xslt / xpath - PullRequest
0 голосов
/ 24 апреля 2018

Мне нужно прочитать путь к изображению из атрибута.Путь к элементу, который содержит этот атрибут, ссылается только на другой атрибут другого элемента.То есть у меня есть идентификатор в одном элементе, который ссылается на другой идентификатор, в элементе которого находится атрибут с моим желаемым путем.Я хочу использовать путь в качестве атрибута в html-теге.

xml source

<root>
     <a lot of nodes>
       <relation id="path_1" path="path/to/image1">
       <relation id="path_2" path="path/to/image2">
       ...
     <more nodes>
       <reference path="path_1">
       <reference path="path_2>
       ...
</root>

желаемый вывод (фрагмент xslt, что-то вроде этого)

<xsl:template match="path/to/reference">
  <img src="{@path}>
  <xsl:apply-templates>
</xsl:template>

желаемый вывод (фрагмент HTML)

<img src="path/to/image1>
...
<img src="path/to/image2>

Как я могу использовать идентификатор из элемента "reference", чтобы прочитать значение идентификатора из элемента "ratio"?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Рассмотрите возможность использования xsl:key здесь (это должно быть в вашей таблице стилей как прямой потомок xsl:stylesheet):

<xsl:key name="relations" match="relation" use="@id" />

Затем, в вашем шаблоне соответствия reference, вы можете сделать это

<xsl:template match="reference">
   <img src="{key('relations', @path)/@path}" />
</xsl:template>
0 голосов
/ 24 апреля 2018

Шаблон, который может удовлетворить ваши потребности, может быть

<xsl:template match="relation[@id = ../reference/@path]">
  <img src="{@path}">
    <xsl:apply-templates />
  </img>
</xsl:template> 

Его вывод:

<img src="path/to/image1"/>
<img src="path/to/image2"/>

И наоборот:

<xsl:template match="reference[@path = ../relation/@id]">
  <img src="{../relation/@path}">
    <xsl:apply-templates />
  </img>
</xsl:template>  

, который дает тот же результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...