Как получить доступ к элементу по значению его атрибута, используя XSL-преобразования и XML? - PullRequest
6 голосов
/ 03 декабря 2009

Я пытаюсь преобразовать XML-документ в XHTML, используя XSL-преобразование, и мне было интересно, как я могу выбрать элемент XML, учитывая значение его атрибута. например,

<image size="small">http:example.small.jpg</image>
<image size="medium">http:example.medium.jpg</image>
<image size="large">http:example.largw.jpg</image>

Я хочу получить доступ только к значению "http: example.medium.jpg" из тега изображения, где size = "medium".

Любая помощь очень ценится.

Ally

Ответы [ 4 ]

7 голосов
/ 03 декабря 2009
<xsl:value-of select="image[@size='medium']" />
5 голосов
/ 03 декабря 2009

Это выражение XPath даст вам нужный вам результат:

//image[@size='medium']

Это очень простой вопрос XPath. Я бы посоветовал вам ознакомиться с некоторыми примерами из учебника W3C School XPath , поскольку XPath - очень выразительный и полезный инструмент.

Чтобы использовать это в таблице стилей XSL, вы, вероятно, начнете с чего-то вроде этого:

<xsl:template match="/">
  <xsl:value-of select="//image[@size='medium']"/>
</xsl:template>

Опять же, это очень простой XSL, поэтому, если вы хотите узнать больше, я бы посоветовал вам взглянуть на учебник XSLT W3C School . Вот куда я иду, когда мне нужно посмотреть подробности о вещах, которые я, возможно, забыл.

2 голосов
/ 03 декабря 2009

Чтобы уточнить выражения XPath в трех ответах

<xsl:template match="/">
  <xsl:value-of select="//image[@size='medium']"/>
</xsl:template>

(@ Welbog) найдет КАЖДЫЙ элемент изображения в документе с размером = "средний"

<xsl:value-of select="image[@size = 'medium']" />

(@ Murph и @carillonator) вернут элемент изображения, только если он является прямым дочерним элементом текущего элемента. Поскольку вы не указали структуру своего XML, вам следует быть осторожным при оценке этого выражения.

1 голос
/ 03 декабря 2009

Это запрос expath - как именно это будет зависеть от структуры xslt, но, учитывая вышесказанное, вызов шаблона будет выглядеть так:

<xsl:apply-templates select="image[@size = 'medium']" />

Просто выбрав значение, erm:

<xsl:value-of select="image[@size = 'medium']" />

Ключ в обоих случаях - это "где", это бит в квадратных скобках. Чтобы дать лучший ответ, я хотел бы увидеть больше XML и XSLT

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