除了高级的文档渲染特性,Doxia同时也提供了一个宏引擎,它允许每种输入格式触发动态内容的注入。一个优秀的例子是snippet宏,它能让一个文档从一个HTTP可访问的源文件抓取代码片段。使用该宏,一小段APT可以被渲染成XHTML。下面的APT代码调用了snippet宏。请注意该代码应该是单独连续的一行,插入一个反斜杠是为了表示换行,以让代码更适合页面。
%{snippet|id=modello-model|url=http://svn.apache.org/repos/asf/maven/archetype/trunk/\ maven-archetype/maven-archetype-model/src/main/mdo/archetype.mdo}
Example 15.19. XHTML中Snippet宏的输出
<div class="source"><pre> <model> <id>archetype</id> <name>Archetype</name> <description><![CDATA[Maven's model for the archetype descriptor.]]></description> <defaults> <default> <key>package</key> <value>org.apache.maven.archetype.model</value> </default> </defaults> <classes> <class rootElement="true" xml.tagName="archetype"> <name>ArchetypeModel</name> <description>Describes the assembly layout and packaging.</description> <version>1.0.0</version> <fields> <field> <name>id</name> <version>1.0.0</version> <required>true</required> <type>String</type> </field> ... </fields> </class> </classes> </model> </pre></div>
Warning
在APT源文档中,绝对不要缩进Doxia宏。这么做会让APT解析器完全的忽略该宏。
要了解更多如何在你代码中定义snippet,以及snippet宏的信息,参考Maven站点上Snippet宏的指南:http://maven.apache.org/guides/mini/guide-snippet-macro.html。