Включение к компиляторам Java

Учитывая образец XML из ...

<?xml version="1.0"?>
<xml>
    <para rollno="392">
        <someValue>365 days</someValue>
    </para>
</xml>

Все, что мне нужно, это, например, везде, где преобразователь видит тег xml para, чтобы заменить его тегом html p и значением par без учета структуры xml.

... вы можете заменить все теги para на теги p простым шаблоном. Объедините этот / эти шаблоны с шаблоном идентификации , и вы можете заменить некоторые теги независимо от структуры XML.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

  <!-- Create HTML prologue -->
  <xsl:template match="/*">
    <html>
      <body>
        <xsl:apply-templates select="node()|@*" />
      </body>
    </html>
  </xsl:template>

  <!-- identity template -->
  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*" />
    </xsl:copy>
  </xsl:template>  

  <!-- Replace 'para' with 'p' -->
  <xsl:template match="para">
    <p>
      <xsl:apply-templates select="node()|@*" />
    </p>
  </xsl:template>

</xsl:stylesheet>

Вывод:

<html>
  <body>
    <p rollno="392">
      <someValue>365 days</someValue>
    </p>
  </body>
</html>
6
задан finnw 31 August 2009 в 18:20
поделиться

2 ответа

Компилятор Groovy является единственным компилятором байт-кода, который позволяет сцепляться в процесс компиляции (пример: Генерируйте байт-код для поддержки Шаблона "одиночка"),

Аннотация, Обрабатывающая API, не предназначена для изменения кода. Поскольку Вы уже узнали, все, что можно сделать, установить classloader, исследовать байт-код во времени выполнения и управлять им. Это - braindead, но это работает. Это следует за генералом, "мы боимся, что разработчик мог попробовать что-то глупая" тема, которую Вы найдете всюду по Java. Нет никакого способа расширить javac. Соответствующие классы являются или частными, окончательными или изменятся со следующей версией Java.

Другая опция состоит в том, чтобы записать аннотируемый Java, например, Вы пишете классу "ExampleTpl.java". Затем Вы используете предварительный компилятор, который разворачивает аннотации в том файле для получения "Example.java". В остальной части кода Вы используете Example и проигнорируйте ExampleTpl.

Для Eclipse существует отчет об ошибках для автоматизации этого шага. Я не знаю ни о какой другой работе в этой области.

4
ответ дан 17 December 2019 в 00:16
поделиться

Это может быть сделано.

Смотрите на мои Римские цифры сообщения в блоге в нашем Java, где процессор аннотации используется для перезаписи кода. Так как ограничение - это, оно работает с javac Sun только.

3
ответ дан 17 December 2019 в 00:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: