2015-11-04 1 views
1

Я использую информацию от Splitting XML into multiple files with XSLT, чтобы разделить XML-файл размером 143М. Если я вручную беру несколько файлов из файла, следующий шаблон работает, как предложено в приведенной выше ссылке.SaxonHE 9 для создания нескольких файлов с XSLT из очень большого файла

<xsl:template match="/"> 
     <xsl:for-each select="Report_Data/Report_Entry"> 
      <xsl:result-document method="xml" href="record-{position()}.xml"> 
       <xsl:copy-of select="."/> 
      </xsl:result-document> 
     </xsl:for-each> 
    </xsl:template> 

Моя проблема, кажется, когда я применяю XSLT для большего документа, который не создает файлы, и выводит только заголовок XML, когда вывод не предоставляется при создании файлов.

$ java -Xmx512M -jar /usr/local/bin/saxon9he.jar largefile.xml transform.xsl 
<?xml version="1.0" encoding="UTF-8"?> 

Я работаю в Cygwin и использую 32-разрядную Java v1.7.0_55.

Добавление результатов -t опционных следующий вывод:

Saxon-HE 9.6.0.5J from Saxonica 
Java version 1.7.0_55 
Stylesheet compilation time: 609.975948ms 
Processing file:/C:/Users/username/Documents/Projects/xml/largefile.xml 
Using parser com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser 
Building tree for file:/C:/Users/username/Documents/Projects/largefile.xml using class net.sf.saxon.tree.tiny.TinyBuilder 
Tree built in 5.85596s (5855.960358ms) 
Tree size: 6942834 nodes, 55451426 characters, 0 attributes 
<?xml version="1.0" encoding="UTF-8"?>Execution time: 5.913265s (5913.265026ms) 
Memory used: 402449896 
NamePool contents: 40 entries in 37 chains. 8 URIs 

ли файл слишком большой для версии HE саксонского? Есть ли другие настройки или причины, по которым я получаю вывод, а не набор файлов?

+0

Попробуйте параметр командной строки '-t' с помощью Saxon, чтобы узнать, выводит ли он какие-либо сообщения о том, почему создание файлов не удалось. –

+0

Спасибо. Я добавил '-t'. Похоже, что в этом случае это не так. – jktravis

+2

В этом случае я предполагаю, что путь 'Report_Data/Report_Entry' не выбирает ничего во входном документе. Основная причина этого - обычно пространство имен, например. ' ...'. Можете ли вы показать нам несколько строк реального ввода? –

ответ

3

Если файлов не создано, и вы не получите сообщение об ошибке из памяти, я предполагаю, что ваш путь Report_Data/Report_Entry ничего не выбирает, основной причиной этого является объявление пространства имен во входном файле, например. <Report_Data xmlns="http://example.com/"><Report_Entry>...</Report_Entry></Report_Data>. Самое простое исправить в XSLT 2.0 - это поставить на элемент xsl:stylesheet или xsl:transform, тогда вам не нужно менять какие-либо пути в коде таблицы стилей, который вы опубликовали.

Смежные вопросы