В Xalan XSLT 1.0 как передать переменную в соответствие шаблону? - PullRequest
1 голос
/ 07 ноября 2011

Мы используем Xalan XSLT 1.0 в Java и хотим передать переменную в соответствие шаблону, чтобы избежать жесткого кодирования имен элементов в файле XSL.Таблица стилей компилируется, но возвращаемая дата неверна.Используем ли мы правильный синтаксис?

Возможные входные данные XML ...

 <books>   
    <book/>
    <book/>
 </books>

 <dvds>
     <dvd/>
     <dvd/>
 </dvds>


<xsl:variable name="matchElement" select="'book'"/>
<!-- OR -->
<xsl:variable name="matchElement" select="'dvd'"/>

<xsl:template match="/*[local-name() = $matchElement]">  

Ответы [ 2 ]

2 голосов
/ 08 ноября 2011

Ваш синтаксис переменной правильный, но обратите внимание, что технически недопустимо использовать ссылки на переменные или параметры в шаблонах совпадений XSLT 1.0.Возможно, однако, что Xalan реализовал это поведение за пределами стандарта.(@ DevNull комментарий о вашем выражении также применяется.)

2 голосов
/ 08 ноября 2011

Это xsl:template:

<xsl:template match="/*[local-name() = $matchElement]"> 

совпадает с корнем.

Либо удалите / из /*, либо измените его на //* (в зависимости от дизайна остальной части вашей таблицы стилей).

Кроме того, если вы используете xsl:param вместо xsl:variable, вы можете установить значение из командной строки.

...