Получить значения из <xd: doc /> - PullRequest
0 голосов
/ 19 марта 2019

Я хочу получить доступ к информации о версии, которую я храню в

<xsl:stylesheet>
<xd:doc scope="stylesheet">
<xd:ul>
    <xd:li>
            <xd:i>Updates</xd:i>: <xd:ul>
                            <xd:li>20.11.2018, version: <xd:i>1.1.0</xd:i></xd:li>
                            <xd:li>08.03.2019, version: <xd:i>2.0.0</xd:i></xd:li>
                            <xd:li>11.03.2019, version: <xd:i>2.0.1</xd:i></xd:li>
            </xd:ul>
    </xd:li>
</xd:ul>
</xd:doc>

</xsl:stylesheet>

Обычно XPath @select оценивается в xml-файл, который в данный момент преобразуется. Но как отнести XPath к (основной) таблице стилей XSL?

Другой вариант - использовать fn:doc(). Но я хочу разместить функцию записи версии во внешнем модуле, поэтому будут динамические имена файлов, и я не знаю, как получить имя xsl-файла

Я использую oXygen XML editor 20.1, где я определяю сценарии преобразования.

1 Ответ

0 голосов
/ 21 марта 2019

@ MartinHonnen Спасибо.Я обновил код в вопросе.Как видите, я храню версию в документах таблицы стилей.

document('') / doc('') - это то, что мне было нужно.Поэтому я реализовал следующее:

Я помещаю узел документа основной таблицы стилей в переменную, которая помещается в эту таблицу стилей:

<xsl:variable name="currentStylesheet" select="doc('')"/>   

, затем обращаюсь к нему во внешнем модуле

 <xsl:variable as="xs:string" name="versionXSLT" select="$currentStylesheet//xd:li[xd:i = 'Updates']/xd:ul/xd:li[last()]/xd:i/string()"/> 

Я также использую его, чтобы получить имя таблицы стилей:

<xsl:variable as="xs:string" name="currentStylesheetName" select="tokenize(document-uri($currentStylesheet), '/')[last()]"/>

Возможно, есть лучшие решения?

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