2013-05-14 2 views
0

Я изучал, как преобразовать файл XML в HTML, используя только Java, а затем я решил научиться использовать язык XSLT, чтобы сделать то же самое.Преобразование XML с Java


Говоря только Java, я имею в виду, используя только синтаксис языка Java, то есть, не XSLT язык.


Для уточнения:

  1. Загрузка XML в DOM (с использованием DocumentBuilder).
  2. Разборчивость (просто делающие такие вещи, как doc.getFirstChild()).
  3. Запись в файл HTML (только с использованием потока символов, а не сериализации XML).

Что случилось?

После того как я включить следующую строку в моей XML:

<?xml-stylesheet type="text/xsl" href="mystylesheet.xsl"?>

Мои Java приложения не смог написать HTML право ...

Если удалить, что все правильно, но Я хочу сохранить его.

Любые идеи, как игнорировать эту «инструкцию»?

ответ

0

Извините, ребята, я думал, что XML с stylesheet.xsl был «преобразован» в объекте DOM, который я использовал для анализа XML.

Я сделал предположение, что:

  • XML-был быть трансформирован, прежде чем положить в DOM.
  • <?xml-stylesheet type="text/xsl" href="mystylesheet.xsl"?> был невидим в DOM.

В основном у меня был простой XML, чтобы начать изучать, как сделать преобразование. Что-то вроде следующего:

<?xml version="1.0" encoding="UTF-8"?> 
<items><item>...</item></items> 

Для простоты (я узнавала ...) Я решил начать свой синтаксический с:

parse(doc.getFirstChild().getFirstChild()); //Expecting the first "item". 

Но после введения таблицы стилей в XML документ стал:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="mystylesheet.xsl"?> 
<items><item>...</item></items> 

Из-за этого введения doc.getFirstChild().getFirstChild() больше не был «товаром».

Тогда я просто понимаю, что забыл пропустить узел с этой инструкцией (я действительно думал, что это было «невидимым» в дереве DOM).

Обучение ребятам, обучение ...

P.S. Это была моя первая попытка превратить XML в XSLT!

Благодарим за помощь.

0

Это зависит от того, как вы читаете XML из своего приложения Java. Но если ваш XML имеет встроенный обработки команд, как

<?xml-stylesheet type="text/xsl" href="mystylesheet.xsl"?> 

, то это означает, что таблица стилей является неотъемлемой частью данных, и должны быть применены к XML для того, чтобы быть полезным. Это очень похоже на инструкцию по обработке CSS стилей, как, например

<?xml-stylesheet type="text/css" href="standard.css"?> 

, который, таким же образом, является неотъемлемой частью XHTML, так же, как если бы это был внутренний стиль в <style> тегах.

Очевидно, что можно читать и использовать XML без применения таблицы стилей, но это должно игнорировать директиву самих данных.

Если вы хотите рассматривать XML как необработанные данные и применять к нему необязательное преобразование по-разному, то вы должны опустить инструкцию обработки из XML.

1

XSLT будет игнорировать инструкции по обработке (то есть удалить их) по умолчанию. Если вы хотите сохранить эту, просто добавить правило шаблона, чтобы сделать это:

<xsl:template match="processing-instruction('xml-stylesheet')"> 
    <xsl:copy/> 
</xsl:template> 

Это предполагает, что ваша таблица стилей написана в классическом рекурсивного спуска стиле с использованием применить-шаблонов; если вы самоучка в XSLT, то вы, возможно, еще не научились этому стилю. Как всегда, намного проще помогать людям, когда они показывают нам код.

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