Можете ли вы иметь переменные XSL в функции document ()? - PullRequest
2 голосов
/ 24 января 2011

Это прекрасно работает:

<xsl:variable 
     name="issue_info_file" 
     select="document('/issues/2010/12/08/info.xml')
                /page-components/issue-metadata-component/title"/>

Но это не так:

<xsl:variable 
     name="issue_info_file" 
     select="string(concat($full_issue_path,'/info.xml'))"/>
<xsl:variable 
     name="issue_title" 
     select="document($issue_info_file)
                /page-components/issue-metadata-component/title"/>

Кто-нибудь, если это даже разрешено в XSLT? Если нет, кто-нибудь рекомендует решение для открытия файлов с динамической переменной?

Ответы [ 2 ]

4 голосов
/ 19 октября 2012

Я не знаю, остается ли этот вопрос открытым, но, похоже, ответа нет.У меня этот код работает в моем XSL-файле.

<xsl:variable name="docRoot">../sitemap/</xsl:variable>
<xsl:variable name="fullDocRoot" select="string(concat($docRoot,'sitemap.xml'))"/>
<xsl:for-each select="document($fullDocRoot)/root/sitemap/loc">

Надеюсь, это кому-нибудь поможет.

1 голос
/ 24 января 2011

Можете ли вы иметь переменные XSL в функции document ()?

Да .

Использование переменных в качестве аргументов document()Функция в порядке, при условии, что значения аргументов соответствуют ожидаемому типу (например, URI).Скорее всего, значение $full_issue_path при объединении с '/info.xml' не дает действительный URI или правильный URI.

Вам нужно предоставить полный пример , если вы хотите, чтобы люди обнаружили вашу ошибку.

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