<html> <head> <link rel="stylesheet" type="text/css" href="../stylesheets/style.css"/> <title>XmlProperty Task</title> </head> <body> <h2><a name="xmlproperty">XmlProperty</a></h2> <h3>Description</h3> <p> Loads property values from a well-formed xml file. There are no other restrictions than "well-formed". You can choose the layout you want. For example this XML property file: <pre> <root> <properties> <foo>bar</foo> </properties> </root> </pre> is roughly equivalent to this Java property file: <pre> root.properties.foo = bar </pre> <p> By default, this load does <em>no</em> processing of the input. In particular, unlike the <a href="property.html">Property task</a>, property references (i.e., <samp>${foo}</samp>) are not resolved. <p> <a name="semanticAttributes"> <h3>Semantic Attributes</h3> </a> Input processing can be enabled by using the <b>semanticAttributes</b> attribute. If this attribute is set to <i>true</i> (its default is <i>false</i>), the following processing occurs as the input XML file is loaded: <ul> <li>Property references are resolved.</li> <li>The following attriubtes are treated differently: <ul> <li><b>id</b>: The property is associated with the given id value.</li> <li><b>location</b>: The property is treated as a file location</li> <li><b>refid</b>: The property is set to the value of the referenced property.</li> <li><b>value</b>: The property is set to the value indicated.</li> </ul> </li> <li><a href="../using.html#path">Path-like Structures</a> can be defined by use of the following attributes: <ul> <li><b>pathid</b>: The given id is used to identify a path. The nested XML tag name is ignored. Child elements can be used (XML tag names are ignored) to identify elements of the path.</li> </ul> </li> </ul> <p> For example, with semantic attribute processing enabled, this XML property file: <pre> <root> <properties> <foo location="bar"/> <quux>${root.properties.foo}</quux> </properties> </root> </pre> is roughly equivalent to the following fragments in a build.xml file: <pre> <property name="root.properties.foo" location="bar"/> <property name="root.properties.quux" value="${root.properties.foo}"/> </pre> </p> <h3>Parameters</h3> <table border="1" cellpadding="2" cellspacing="0"> <tr> <td valign="top"><b>Attribute</b></td> <td valign="top"><b>Description</b></td> <td align="center" valign="top"><b>Required</b></td> </tr> <tr> <td valign="top">file</td> <td valign="top">The XML file to parse.</td> <td valign="top" align="center">Yes</td> </tr> <tr> <td valign="top">prefix</td> <td valign="top">The prefix to prepend to each property</td> <td valign="top" align="center">No</td> </tr> <tr> <td valign="top">keepRoot</td> <td valign="top">Keep the xml root tag as the first value in the property name.</td> <td valign="top" align="center">No, default is <i>true</i>.</td> </tr> <tr> <td valign="top">validate</td> <td valign="top">Validate the input file (e.g. by a DTD). Otherwise the XML must only be well-formed.</td> <td valign="top" align="center">No, default is <i>false</i>.</td> </tr> <tr> <td valign="top">collapseAttributes</td> <td valign="top">Treat attributes as nested elements.</td> <td valign="top" align="center">No, default is <i>false</i>.</td> </tr> <tr> <td valign="top">semanticAttributes</td> <td valign="top">Enable special handling of certain attribute names. See the <a href="#semanticAttributes">Semantic Attributes</a> section for more information.</td> <td valign="top" align="center">No, default is <i>false</i>.</td> </tr> <tr> <td valign="top">includeSemanticAttribute</td> <td valign="top">Include the semantic attribute name as part of the property name. Ignored if <i>semanticAttributes</i> is not set to <i>true</i>. See the <a href="#semanticAttributes">Semantic Attributes</a> section for more information.</td> <td valign="top" align="center">No, default is <i>false</i>.</td> </tr> <tr> <td valign="top">rootDirectory</td> <td valign="top">The directory to use for resolving file references. Ignored if <i>semanticAttributes</i> is not set to <i>true</i>.</td> <td valign="top" align="center">No, default is <i>${basedir}</i>.</td> </tr> </table> <h3><a name="nested">Nested Elements</a></h3> <h4>xmlcatalog</h4> <p>The <a href="../CoreTypes/xmlcatalog.html"><tt><xmlcatalog></tt></a> element is used to perform entity resolution.</p> <a name="examples"> <h3>Examples</h3> </a> <h4>Non-semantic Attributes</h4> <p>Here is an example xml file that does not have any semantic attributes.</p> <pre> <root-tag myattr="true"> <inner-tag someattr="val">Text</inner-tag> <a2><a3><a4>false</a4></a3></a2> </root-tag> </pre> <h5>default loading</h5> <p>This entry in a build file: <pre> <xmlproperty file="somefile.xml"/></pre> is equivalent to the following properties: <pre> root-tag(myattr)=true root-tag.inner-tag=Text root-tag.inner-tag(someattr)=val root-tag.a2.a3.a4=false </pre> <h5>collapseAttributes=false</h5> <p>This entry in a build file: <pre> <xmlproperty file="somefile.xml" collapseAttributes="true"/></pre> is equivalent to the following properties: <pre> root-tag.myattr=true root-tag.inner-tag=Text root-tag.inner-tag.someatt=val root-tag.a2.a3.a4=false </pre> <h5>keepRoot=false</h5> <p>This entry in a build file: <pre> <xmlproperty file="somefile.xml" keepRoot="false"/></pre> is equivalent to the following properties: <pre> inner-tag=Text inner-tag(someattr)=val a2.a3.a4=false </pre> <h4>Semantic Attributes</h4> <p>Here is an example xml file that has semantic attributes.</p> <pre> <root-tag> <version value="0.0.1"/> <build folder="build"> <classes id="build.classes" location="${build.folder}/classes"/> <reference refid="build.classes"/> </build> <compile> <classpath pathid="compile.classpath"> <pathelement location="${build.classes}"/> </classpath> </compile> <run-time> <jars>*.jar</jars> <classpath pathid="run-time.classpath"> <path refid="compile.classpath"/> <pathelement path="${run-time.jars}"/> </classpath> </run-time> </root-tag> </pre> <h5>default loading (semanticAttributes=true)</h5> <p>This entry in a build file: <pre> <xmlproperty file="somefile.xml" semanticAttributes="true"/></pre> is equivalent to the following entries in a build file: <pre> <property name="version" value="0.0.1"/> <property name="build.folder" value="build"/> <property name="build.classes" location="${build.folder}/classes" id="build.classes"/> <property name="build.reference" refid="build.classes"/> <property name="run-time.jars" value="*.jar/> <classpath id="compile.classpath"> <pathelement location="${build.classes}"/> </classpath> <classpath id="run-time.classpath"> <path refid="compile.classpath"/> <pathelement path="${run-time.jars}"/> </classpath> </pre> <h5>includeSemanticAttribute="true"</h5> <p>This entry in a build file: <pre> <xmlproperty file="somefile.xml" semanticAttributes="true" includeSemanticAttribute="true"/> </pre> is equivalent to the following entries in a build file: <pre> <property name="version.value" value="0.0.1"/> <property name="build.folder" value="build"/> <property name="build.classes.location" location="${build.folder}/classes"/> <property name="build.reference.refid" refid="build.location"/> <property name="run-time.jars" value="*.jar/> <classpath id="compile.classpath"> <pathelement location="${build.classes}"/> </classpath> <classpath id="run-time.classpath"> <path refid="compile.classpath"/> <pathelement path="${run-time.jars}"/> </classpath> </pre> <hr> <p align="center">Copyright © 2002-2005 The Apache Software Foundation. All rights Reserved.</p> </body> </html>