Обход узла XSL - PullRequest
       5

Обход узла XSL

1 голос
/ 09 ноября 2010

Я работаю над созданием XSL-документа, который будет использоваться для создания HTML-кода на основе XML-файла.Я очень новичок в мире XML / XSL и изо всех сил пытаюсь даже задавать правильные вопросы.Ниже приводится примерное представление файла XML:

<Item elemID="1" material="oak"></Item>
<Item elemid="2" material="cedar"></Item>
<Item elemid="3" material="spruce"></Item>
<ColourType primary_object="1" secondary_object="100"></ColourType>
<ColourType primary_object="2" secondary_object="101"></ColourType>
<ColourType primary_object="3" secondary_object="102"></ColourType>
<Colour id="100" name="Blue"></Colour>
<Colour id="101" name="Red"></Colour>
<Colour id="102" name="Yellow"></Colour>

Я могу получить узел <Item> без проблем.Передо мной стоит задача выяснить, как я могу найти узел <ColourType> и, в свою очередь, узел <Colour>.

Часть моего XSL выглядит так:дает мне узел <Item>, но я озадачен тем, как я могу ориентироваться или искать узел <ColourType>.

Можете ли вы мне помочь?1019 * Кевин

Ответы [ 2 ]

1 голос
/ 09 ноября 2010

Это должно быть что-то вроде

<xsl:variable name="clr" select="//Colour[@id=//ColourType[@primary_object=$occrid]/@secondary_object]/@name" />
0 голосов
/ 09 ноября 2010

Это часто задаваемые вопросы: При наличии перекрестной ссылки следует использовать ключи

С http://www.w3.org/TR/xslt#key

Ключи предоставляют способ работы с документы, содержащие неявное структура перекрестных ссылок. ID, Типы атрибутов IDREF и IDREFS в XML предоставляет механизм, позволяющий XML документы, чтобы сделать их перекрестная ссылка явная. XSLT поддерживает это через идентификатор XPath функция.

Предположим, эти объявления ключей:

<xsl:key name="kColourTypeByPrimary" match="ColourType" use="@primary_object"/>
<xsl:key name="kColourById" match="Colour" use="@id"/>

Тогда вы можете выбрать Colour для вашего контекста Item с этим выражением XPath / XSLT:

key('kColourById',key('kColourTypeByPrimary',@elemid)/@secondary_object)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...