Мой Swift приложение производит XMLDocument, который затем преобразуется с помощью XSLT:Как обрабатывать XMLDocument с помощью EXSLT или XSL 2 в Swift?
xmlDocument.object(byApplyingXSLTString: xsltString, arguments: nil)
В моей таблицы стилей XSLT (xsltString
), я хотел бы получить доступ к результирующих фрагментов дерева с использованием XPath. Это не поддерживается в XSLT 1.0; Я пробовал использовать XSLT 2.0, но Swift не поддерживает его; указав version="2.0"
в xsl:stylesheet
элемент производит эту ошибку:
xsl:version: only 1.0 features are supported
Я думаю, что я мог бы использовать node-set
из EXSLT. Я не знаком с этим, но я попытался добавить информацию об EXSLT в элемент xsl:stylesheet
. Это, кажется, не имеют никакого эффекта:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
extension-element-prefixes="exsl"
version="1.0">
я получаю следующие ошибки:
xmlXPathCompOpEval: function node-set not found
XPath error : Unregistered function
Можно ли использовать XSL 2,0 или EXSLT в моей ситуации, и как?
Рассмотрим, чтобы показать нам минимальный, но полный образец вы пробовали. Весьма необычно, что процессор XSLT 1.0 не поддерживает поддержку 'exsl: node-set' или аналогичную функцию в проприетарном пространстве имен. Итак, узнайте, какой XSLT-процессор Swift использует и, надеюсь, способ конвертировать фрагмент результирующего дерева в набор узлов. –
Попробуйте запустить простой тестовый пример, например таблицу стилей, на http://xsltransform.net/3NSSEvF, на ваш процессор. –
Спасибо. Используя таблицу стилей, с которой вы связались, я увидел, что Swift использует libxslt. Однако я не смог продолжить: я попытался префикс 'node-set' с' libxslt: ',' xt: 'и' saxon: ', как описано [здесь] (http://xmlsoft.org/XSLT /html/libxslt-extra.html#xsltFunctionNodeSet), но всегда получайте ту же ошибку: 'xmlXPathCompOpEval: function node-set not found'. –