Я хочу извлечь данные из моего XML-файла и использовать его как ссылку - PullRequest
0 голосов
/ 22 ноября 2011

это мой лист xml-

<ErrorLog_list>
<error><download_list>/home/fes/logs/ErrorLog-20111109.gz</download_list></error>
<error><download_list>/home/fes/logs/ErrorLog-20111110.gz</download_list></error>
<error><download_list>/home/fes/logs/ErrorLog-20111114.gz</download_list></error>
</ErrorLog_list>

. Я хочу создать ссылку, указывающую на error/download_list

, поэтому я использовал этот тег

<a href="{ErrorLog_list/error/download_list}"><xsl:value-of select="Title"/></a><br/>

но это не работает ...

Я понял, что проблема может быть в том, что она сформулирована как - xmlns attributes are not interpreted as attribute value templates

Мой вопрос заключается в том, как я могу изменить свойпространство имен, чтобы использовать вышеуказанный метод?любая помощь будет оценена.

Пожалуйста, игнорируйте мою небрежность.Спасибо

1 Ответ

0 голосов
/ 16 декабря 2011

У нас должен быть весь XML-документ, чтобы получить полный ответ, но вот что я могу сказать.

Поскольку вы пишете <xsl:value-of select="Title"/>, но мы не видим ни одного элемента Title, я думаю, чтомы находимся в шаблонном правиле, которое соответствует элементу, который содержит Title и содержит ErrorLog_list.

Так что, когда вы используете шаблон значения атрибута {ErrorLog_list/error/download_list}, вы пытаетесь получить все download_list сXPath.Я предполагаю, что возвращенный набор узлов будет согласован со строковым значением, и, таким образом, будет использоваться первое значение набора узлов, а не другие.

Вы должны использовать for-each или создать шаблонное правило, котороесоответствует ErrorLog_list/error/download_list.Также вы можете использовать xsl:attribute внутри тела правила шаблона, если хотите избежать использования значения шаблона атрибута.

<xsl:template match="download_list">
    <a>
        <xsl:attribute name="href"><xsl:value-of select="."/></xsl:attribute>
        <xsl:value-of select="../../../Title"/>
    </a>
</xsl:template>
...