Учитывая образец XML из ...
<?xml version="1.0"?>
<xml>
<para rollno="392">
<someValue>365 days</someValue>
</para>
</xml>
Все, что мне нужно, это, например, везде, где преобразователь видит тег xml para, чтобы заменить его тегом html p и значением par без учета структуры xml.
blockquote>... вы можете заменить все теги
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>
Компилятор Groovy является единственным компилятором байт-кода, который позволяет сцепляться в процесс компиляции (пример: Генерируйте байт-код для поддержки Шаблона "одиночка"),
Аннотация, Обрабатывающая API, не предназначена для изменения кода. Поскольку Вы уже узнали, все, что можно сделать, установить classloader, исследовать байт-код во времени выполнения и управлять им. Это - braindead, но это работает. Это следует за генералом, "мы боимся, что разработчик мог попробовать что-то глупая" тема, которую Вы найдете всюду по Java. Нет никакого способа расширить javac. Соответствующие классы являются или частными, окончательными или изменятся со следующей версией Java.
Другая опция состоит в том, чтобы записать аннотируемый Java, например, Вы пишете классу "ExampleTpl.java". Затем Вы используете предварительный компилятор, который разворачивает аннотации в том файле для получения "Example.java". В остальной части кода Вы используете Example
и проигнорируйте ExampleTpl
.
Для Eclipse существует отчет об ошибках для автоматизации этого шага. Я не знаю ни о какой другой работе в этой области.
Это может быть сделано.
Смотрите на мои Римские цифры сообщения в блоге в нашем Java, где процессор аннотации используется для перезаписи кода. Так как ограничение - это, оно работает с javac Sun только.