xsltproc (osx) "не таблица стилей, ошибка компиляции". но xml & xsl оба работают над онлайн-инструментом - PullRequest
3 голосов
/ 13 января 2012

удалось заставить мой xsl работать на http://www.xmlper.com/ (отличный инструмент, хорошая рекомендация из других комментариев stackoverflow).

но когда я запускаю тот же (и теперь сильно урезанный) xml & xsl наВ моей командной строке Mac OS X появляется сообщение «Ошибка компиляции, документ не является таблицей стилей»

Это проблема с версией (вывод xsltproc ниже)?я использую последнюю версию Mac (10.7) и последнюю версию xcode 4.2 (для обеспечения xml lib и т. д.)?я не смог найти ничего о том, что xsltproc не поддерживает xslt v2.0 (я пытался установить v1.0 - без разницы) Я попытался загрузить другие процессоры xslt (например, saxon), но попал в старые версии Java и не смогзапустите программу.

надеюсь, кто-то сталкивался с этим и решил это!спасибо

Бен

Входной XML-файл

<?xml version="1.0" encoding="utf-8"?>
<resultsfile>
  <planset>
    <voicemail_divert>
      <cost_over_plan>0</cost_over_plan>
      <this_txn_absolutely_cost_subtotal>0</this_txn_absolutely_cost_subtotal>
    </voicemail_divert>
  </planset>
</resultsfile>

xsl

<?xml version="1.0"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="xml"/>
<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>
  <xsl:template match="cost_over_plan">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
    <extracost_overplan_aspartoftotal>0</extracost_overplan_aspartoftotal>
    <extraqty_overplan_aspartoftotal>0</extraqty_overplan_aspartoftotal>
</xsl:template>
</xsl:stylesheet>

ошибка

$ xsltproc --debug --novalid --nonet f.xml add_extraqtyandcostfields.xsl 
compilation error: file f.xml line 2 element resultsfile
 xsltParseStylesheetProcess : document is not a stylesheet

информация о версии

$ xsltproc -version
Using libxml 20703, libxslt 10124 and libexslt 813
xsltproc was compiled against libxml 20703, libxslt 10124 and libexslt 813
libxslt 10124 was compiled against libxml 20703
libexslt 813 was compiled against libxml 20703

Ответы [ 2 ]

4 голосов
/ 13 января 2012

Как указано в справочной странице , таблица стилей должна предшествовать файлу XML в аргументах xsltproc:

$ xsltproc --debug --novalid --nonet add_extraqtyandcostfields.xsl f.xml

должно работать.

Кроме того, ваш xsltproc не поддерживает XSLT 2.0. К счастью, ваша таблица стилей, похоже, не требует новых функций XSLT 2.0 . Вы можете просто заменить <xsl:stylesheet version="2.0" на <xsl:stylesheet version="1.0", чтобы решить проблему.

1 голос
/ 13 января 2012

У вас есть преобразование XSLT 2.0, но используемый процессор XSLT (libxslt) поддерживает только XSLT 1.0 .

Одним из возможных решений является использование преобразования XSLT 1.0. Это может потребовать от незначительных до значительных изменений, в зависимости от того, какие функции XSLT 2.0 используются в текущем преобразовании.

Я не вижу даже одной функции XSLT 2.0 в предоставленном коде XSLT - поэтому простое изменение значения version artttibute с 2.0 на 1.0 может устранить наблюдаемое ошибка.

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