Я пытался решить проблему без какого-либо успеха, и пробным путем я пришел к этому небольшому XSLT, чтобы доказать свою точку зрения. Частично проблема в том, что это нормально работает на моем P C, но при работе на сервере вывод другой. Я смог точно указать на тот факт, что XSLT записывает два последовательных xsl:text
, которые оба являются пробелами.
Проблема в том, что при наличии двух последовательных пропусков один из двух подавляется. Для любопытных, я на самом деле пишу файл MAR CXML, используя LO C MODS в MAR C XSLT, и проблема с CP 7-10 и CP 11-14 для поля 008 , Когда оба поля не заполнены, вместо 8 происходит только 4 пробела, что приводит к сбою загрузки.
Вот XSLT:
<xsl:template match="/">
<xsl:text>beginning of a string</xsl:text>
<xsl:text> </xsl:text>
<xsl:text> </xsl:text>
<xsl:text>end of a string</xsl:text>
</xsl:template>
Результат выглядит следующим образом:
beginning of a string end of a string
Обратите внимание, что вместо 8. Только 4 пробела. Если я вставлю текст в любой из двух пустых XSLT-текстов, все в порядке. И снова, это выводится нормально на моем P C, но не на сервере.
Кто-нибудь знает, есть ли опция или конфигурация Saxon, для которой необходимо настроить ее правильную выдачу?
Я использую Liquid Studio для локального тестирования XSLT на мой компьютер использует тот же входной файл, что и файл на сервере. На сервере преобразование выполняется из командной строки, и мы используем Saxon HE9.9. Я загружаю и смотрю полученный XML на моем P C с использованием Liquid Studio.
Вот командная строка: D:\Program Files\Saxonica\SaxonHE9.9N\bin\Transform" -s:"\\fileshare.lacaws02.local\goanywhere\data\Test008\mods2marc-In 2.xml" -xsl:\\fileshare.lacaws02.local\goanywhere\Lib\MODS\MODS3-4_TO_MARC21slim_XSLT16.xsl -o:\\fileshare.lacaws02.local\goanywhere\userdata\workspace\1000000000114\Output.xml