Discussion:
[FreeMarker-user] Beginner question: Accessing XML-Attributes via Template?
Tarik Mustafic
2009-03-22 19:40:02 UTC
Permalink
Hello everybody,

I'm trying to parse a XML-Document with Freemarker and to merge the
model with a template, especially accessing the XML-Attributes from the
model. I have done the following:

--------------------- code
Map<String, Object> root = new HashMap<String, Object>();
root.put("doc", freemarker.ext.dom.NodeModel.parse(new File("file.xml")));
--------------------- code

The XML-document looks like as follows:

--------------------- code
<?xml version="1.0" encoding="UTF-8"?>
<bdd:bWorkflow xsi:schemaLocation="..." xmlns:bdd="..." xmlns:xsi="...">
<bdd:wsbpelEngineInformation wsbpelProcess="..."
wsbpelProcesslocation="...">
<bdd:versioning version="..."/>
<bdd:persistence storePersistent="..."/>
<bdd:partnerLinks>
<bdd:partnerLink name="...">
<bdd:myRole>
<bdd:endpointReference
serviceName="..."
servicePort="..."
binding="..."
xmlns:pal="..."/>
</bdd:myRole>
</bdd:partnerLink>
<bdd:partnerLink name="...">
<bdd:partnerRole bdd:serviceType="..."
bdd:serviceCall="..."/>
</bdd:partnerLink>
</bdd:partnerLinks>
<bdd:extensions/>
<bdd:references>
<bdd:reference location="..." referenceGroup="..."
namespace="..."/>
<bdd:reference location="..." referenceGroup="..."
namespace="..."/>
</bdd:references>
</bdd:wsbpelEngineInformation>
</bdd:bWorkflow>
--------------------- code

Now my question: How can I access the XML-Attribute elements in the
Template? For example how to get the version-Attribute of the
versioning-Element etc?

Thanks in advance.

Kind regards.
Tarik
Daniel López
2009-03-23 08:02:20 UTC
Permalink
Hi,

The first place you can go to see how to handle XML content from a=
=20
FreeMarker template is the manual itself ->
Part III. XML Processing Guide:
http://freemarker.sourceforge.net/docs/xgui.html

Then you can see a working example like the one we have through FishE=
ye:
A sample XML document:
http://fisheye5.cenqua.com/browse/webleaftest/src-www/WEB-INF/xml/sho=
wItems.xml?r=3D1.2
The FreeMarker template:
http://fisheye5.cenqua.com/browse/webleaftest/src-www/WEB-INF/templat=
es/item.ftl?r=3D1.2
The resulting HTML:
http://fisheye5.cenqua.com/browse/webleaftest/src-www/showItems.html?=
r=3D1.4

S!
D.
Post by Tarik Mustafic
Hello everybody,
=20
I'm trying to parse a XML-Document with Freemarker and to merge the
model with a template, especially accessing the XML-Attributes from=
the
Post by Tarik Mustafic
=20
--------------------- code
Map<String, Object> root =3D new HashMap<String, Object>();
root.put("doc", freemarker.ext.dom.NodeModel.parse(new File("file.x=
ml")));
Post by Tarik Mustafic
--------------------- code
=20
=20
--------------------- code
<?xml version=3D"1.0" encoding=3D"UTF-8"?>
<bdd:bWorkflow xsi:schemaLocation=3D"..." xmlns:bdd=3D"..." xmlns:x=
si=3D"...">
Post by Tarik Mustafic
<bdd:wsbpelEngineInformation wsbpelProcess=3D"..."
wsbpelProcesslocation=3D"...">
<bdd:versioning version=3D"..."/>
<bdd:persistence storePersistent=3D"..."/>
<bdd:partnerLinks>
<bdd:partnerLink name=3D"...">
<bdd:myRole>
<bdd:endpointReference
serviceName=3D"..."
servicePort=3D"..."
binding=3D"..."
xmlns:pal=3D"..."/>
</bdd:myRole>
</bdd:partnerLink>
<bdd:partnerLink name=3D"...">
<bdd:partnerRole bdd:serviceType=3D"..."
bdd:serviceCall=3D"..."/>
</bdd:partnerLink>
</bdd:partnerLinks>
<bdd:extensions/>
<bdd:references>
<bdd:reference location=3D"..." referenceGroup=3D"..."
namespace=3D"..."/>
<bdd:reference location=3D"..." referenceGroup=3D"..."
namespace=3D"..."/>
</bdd:references>
</bdd:wsbpelEngineInformation>
</bdd:bWorkflow>
--------------------- code
=20
Now my question: How can I access the XML-Attribute elements in the
Template? For example how to get the version-Attribute of the
versioning-Element etc?
=20
Thanks in advance.
=20
Kind regards.
Tarik
Tarik M.
2009-03-23 23:47:58 UTC
Permalink
Hello,

thanks a lot for the example. I read the tutorial several times, but I
wasn't able to navigate through my XML-Document hierarchy. Whatever I've
tried I got the following Exception:

Expecting a string, date or number here, Expression
***@wsbpelProcess is instead a
freemarker.ext.dom.NodeListModel

In the template I defined:
<process name="${***@wsbpelProcess}">

Here is the XML part:
<bdd:bWorkflow xsi:schemaLocation="..." xmlns:bdd="..." xmlns:xsi="...">
<bdd:wsbpelEngineInformation wsbpelProcess="..."
wsbpelProcesslocation="...">
....

I thought that this is the way to navigate through the DOM-Tree, because the
tutorial examples show the same. Does anybody know what's wrong in my
example?

Thanks in advance.
Tarik
Post by Daniel López
Hi,
The first place you can go to see how to handle XML content from a
FreeMarker template is the manual itself ->
http://freemarker.sourceforge.net/docs/xgui.html
http://fisheye5.cenqua.com/browse/webleaftest/src-www/WEB-INF/xml/showItems.xml?r=1.2
http://fisheye5.cenqua.com/browse/webleaftest/src-www/WEB-INF/templates/item.ftl?r=1.2
http://fisheye5.cenqua.com/browse/webleaftest/src-www/showItems.html?r=1.4
S!
D.
Post by Tarik Mustafic
Hello everybody,
I'm trying to parse a XML-Document with Freemarker and to merge the
model with a template, especially accessing the XML-Attributes from the
--------------------- code
Map<String, Object> root = new HashMap<String, Object>();
root.put("doc", freemarker.ext.dom.NodeModel.parse(new
File("file.xml")));
--------------------- code
--------------------- code
<?xml version="1.0" encoding="UTF-8"?>
<bdd:bWorkflow xsi:schemaLocation="..." xmlns:bdd="..." xmlns:xsi="...">
<bdd:wsbpelEngineInformation wsbpelProcess="..."
wsbpelProcesslocation="...">
<bdd:versioning version="..."/>
<bdd:persistence storePersistent="..."/>
<bdd:partnerLinks>
<bdd:partnerLink name="...">
<bdd:myRole>
<bdd:endpointReference
serviceName="..."
servicePort="..."
binding="..."
xmlns:pal="..."/>
</bdd:myRole>
</bdd:partnerLink>
<bdd:partnerLink name="...">
<bdd:partnerRole bdd:serviceType="..."
bdd:serviceCall="..."/>
</bdd:partnerLink>
</bdd:partnerLinks>
<bdd:extensions/>
<bdd:references>
<bdd:reference location="..." referenceGroup="..."
namespace="..."/>
<bdd:reference location="..." referenceGroup="..."
namespace="..."/>
</bdd:references>
</bdd:wsbpelEngineInformation>
</bdd:bWorkflow>
--------------------- code
Now my question: How can I access the XML-Attribute elements in the
Template? For example how to get the version-Attribute of the
versioning-Element etc?
Thanks in advance.
Kind regards.
Tarik
------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
FreeMarker-user mailing list
https://lists.sourceforge.net/lists/listinfo/freemarker-user
--
View this message in context: http://www.nabble.com/Beginner-question%3A-Accessing-XML-Attributes-via-Template--tp22649717p22671781.html
Sent from the freemarker-user mailing list archive at Nabble.com.
Daniel Dekany
2009-03-24 00:14:44 UTC
Permalink
Post by Tarik M.
Hello,
thanks a lot for the example. I read the tutorial several times, but I
wasn't able to navigate through my XML-Document hierarchy. Whatever I've
Expecting a string, date or number here, Expression
freemarker.ext.dom.NodeListModel
The error message basically means that the result of your XML query
contains not exactly one node. So either you have 0 matching node, or
multiple matching nodes (try ${yourQuery?size} to find out which). In
those cases a the resulting node list can't be automatically treated
as a scalar, hence the cryptic error message.
Post by Tarik M.
<process
<bdd:bWorkflow xsi:schemaLocation="..." xmlns:bdd="..." xmlns:xsi="...">
<bdd:wsbpelEngineInformation wsbpelProcess="..."
wsbpelProcesslocation="...">
....
I thought that this is the way to navigate through the DOM-Tree, because the
tutorial examples show the same. Does anybody know what's wrong in my
example?
Thanks in advance.
Tarik
Post by Daniel López
Hi,
The first place you can go to see how to handle XML content from a
FreeMarker template is the manual itself ->
http://freemarker.sourceforge.net/docs/xgui.html
http://fisheye5.cenqua.com/browse/webleaftest/src-www/WEB-INF/xml/showItems.xml?r=1.2
http://fisheye5.cenqua.com/browse/webleaftest/src-www/WEB-INF/templates/item.ftl?r=1.2
http://fisheye5.cenqua.com/browse/webleaftest/src-www/showItems.html?r=1.4
S!
D.
Post by Tarik Mustafic
Hello everybody,
I'm trying to parse a XML-Document with Freemarker and to merge the
model with a template, especially accessing the XML-Attributes from the
--------------------- code
Map<String, Object> root = new HashMap<String, Object>();
root.put("doc", freemarker.ext.dom.NodeModel.parse(new
File("file.xml")));
--------------------- code
--------------------- code
<?xml version="1.0" encoding="UTF-8"?>
<bdd:bWorkflow xsi:schemaLocation="..." xmlns:bdd="..." xmlns:xsi="...">
<bdd:wsbpelEngineInformation wsbpelProcess="..."
wsbpelProcesslocation="...">
<bdd:versioning version="..."/>
<bdd:persistence storePersistent="..."/>
<bdd:partnerLinks>
<bdd:partnerLink name="...">
<bdd:myRole>
<bdd:endpointReference
serviceName="..."
servicePort="..."
binding="..."
xmlns:pal="..."/>
</bdd:myRole>
</bdd:partnerLink>
<bdd:partnerLink name="...">
<bdd:partnerRole bdd:serviceType="..."
bdd:serviceCall="..."/>
</bdd:partnerLink>
</bdd:partnerLinks>
<bdd:extensions/>
<bdd:references>
<bdd:reference location="..." referenceGroup="..."
namespace="..."/>
<bdd:reference location="..." referenceGroup="..."
namespace="..."/>
</bdd:references>
</bdd:wsbpelEngineInformation>
</bdd:bWorkflow>
--------------------- code
Now my question: How can I access the XML-Attribute elements in the
Template? For example how to get the version-Attribute of the
versioning-Element etc?
Thanks in advance.
Kind regards.
Tarik
------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
FreeMarker-user mailing list
https://lists.sourceforge.net/lists/listinfo/freemarker-user
--
Best regards,
Daniel Dekany
Daniel López
2009-03-24 11:25:52 UTC
Permalink
That Exception: "Expecting...is instead a=20
freemarker.ext.dom.NodeListModel" is the most common one when process=
ing=20
XML with FreeMarker. If you come from an XSLT background, it takes a=
=20
while to get used to it but FreeMarker is not as lenient as XSLT is,=
=20
meaning that if a node does not exist, in XSLT usually "nothing happe=
ns"=20
whereas in FreeMarker, an error is produced.

And as Daniel Dekany indicated, this is usually the error that is=
=20
produced when your "XPath" does not match a Node. Instead of returnin=
g=20
"nothing", FreeMarker returns an empty list of nodes, hence the error=
=20
message. Given the XML, it looks as if it should match correctly one=
=20
node, but given that there are namespaces in the mix, I'm not that su=
re=20
as I have not played with "namespaced" XML with FreeMarker.

Good luck!
D.
Post by Daniel Dekany
Post by Tarik M.
Hello,
thanks a lot for the example. I read the tutorial several times, b=
ut I
Post by Daniel Dekany
Post by Tarik M.
wasn't able to navigate through my XML-Document hierarchy. Whateve=
r I've
Post by Daniel Dekany
Post by Tarik M.
Expecting a string, date or number here, Expression
ead a
Post by Daniel Dekany
Post by Tarik M.
freemarker.ext.dom.NodeListModel
=20
The error message basically means that the result of your XML query
contains not exactly one node. So either you have 0 matching node, =
or
Post by Daniel Dekany
multiple matching nodes (try ${yourQuery?size} to find out which). =
In
Post by Daniel Dekany
those cases a the resulting node list can't be automatically treate=
d
Post by Daniel Dekany
as a scalar, hence the cryptic error message.
=20
Post by Tarik M.
<process
<bdd:bWorkflow xsi:schemaLocation=3D"..." xmlns:bdd=3D"..." xmlns:=
xsi=3D"...">
Post by Daniel Dekany
Post by Tarik M.
<bdd:wsbpelEngineInformation wsbpelProcess=3D"..."
wsbpelProcesslocation=3D"...">
....
I thought that this is the way to navigate through the DOM-Tree, b=
ecause the
Post by Daniel Dekany
Post by Tarik M.
tutorial examples show the same. Does anybody know what's wrong in=
my
Post by Daniel Dekany
Post by Tarik M.
example?
Thanks in advance.
Tarik
Hi,
The first place you can go to see how to handle XML content from =
a=20
Post by Daniel Dekany
Post by Tarik M.
FreeMarker template is the manual itself ->
http://freemarker.sourceforge.net/docs/xgui.html
Then you can see a working example like the one we have through F=
http://fisheye5.cenqua.com/browse/webleaftest/src-www/WEB-INF/xml=
/showItems.xml?r=3D1.2
Post by Daniel Dekany
Post by Tarik M.
http://fisheye5.cenqua.com/browse/webleaftest/src-www/WEB-INF/tem=
plates/item.ftl?r=3D1.2
Post by Daniel Dekany
Post by Tarik M.
http://fisheye5.cenqua.com/browse/webleaftest/src-www/showItems.h=
tml?r=3D1.4
Post by Daniel Dekany
Post by Tarik M.
S!
D.
Post by Tarik Mustafic
Hello everybody,
I'm trying to parse a XML-Document with Freemarker and to merge =
the
Post by Daniel Dekany
Post by Tarik M.
Post by Tarik Mustafic
model with a template, especially accessing the XML-Attributes f=
rom the
Post by Daniel Dekany
Post by Tarik M.
Post by Tarik Mustafic
--------------------- code
Map<String, Object> root =3D new HashMap<String, Object>();
root.put("doc", freemarker.ext.dom.NodeModel.parse(new
File("file.xml")));
--------------------- code
--------------------- code
<?xml version=3D"1.0" encoding=3D"UTF-8"?>
<bdd:bWorkflow xsi:schemaLocation=3D"..." xmlns:bdd=3D"..." xmln=
s:xsi=3D"...">
Post by Daniel Dekany
Post by Tarik M.
Post by Tarik Mustafic
<bdd:wsbpelEngineInformation wsbpelProcess=3D"..."
wsbpelProcesslocation=3D"...">
<bdd:versioning version=3D"..."/>
<bdd:persistence storePersistent=3D"..."/>
<bdd:partnerLinks>
<bdd:partnerLink name=3D"...">
<bdd:myRole>
<bdd:endpointReference
serviceName=3D"..."
servicePort=3D"..."
binding=3D"..."
xmlns:pal=3D"..."/>
</bdd:myRole>
</bdd:partnerLink>
<bdd:partnerLink name=3D"...">
<bdd:partnerRole bdd:serviceType=3D"..."
bdd:serviceCall=3D"..."/>
</bdd:partnerLink>
</bdd:partnerLinks>
<bdd:extensions/>
<bdd:references>
<bdd:reference location=3D"..." referenceGroup=3D"..=
."
Post by Daniel Dekany
Post by Tarik M.
Post by Tarik Mustafic
namespace=3D"..."/>
<bdd:reference location=3D"..." referenceGroup=3D"..=
."
Post by Daniel Dekany
Post by Tarik M.
Post by Tarik Mustafic
namespace=3D"..."/>
</bdd:references>
</bdd:wsbpelEngineInformation>
</bdd:bWorkflow>
--------------------- code
Now my question: How can I access the XML-Attribute elements in =
the
Post by Daniel Dekany
Post by Tarik M.
Post by Tarik Mustafic
Template? For example how to get the version-Attribute of the
versioning-Element etc?
Thanks in advance.
Kind regards.
Tarik
mamathayv
2014-05-23 13:32:40 UTC
Permalink
Hi all,

Even i am facing the same problem while accessing attributes from xml with
namespace.
Please can any one help me.

Thanks in advance.

Regards,
Mamta




--
View this message in context: http://freemarker.624813.n4.nabble.com/Beginner-question-Accessing-XML-Attributes-via-Template-tp626522p4655157.html
Sent from the freemarker-user mailing list archive at Nabble.com.
Daniel Dekany
2014-05-23 21:10:13 UTC
Permalink
Hi,

It should be something like:

<#ftl ns_prefixes={"e":"http://example.com/ebook"}>
${someElement["@e:someAttribute"]}
--
Regards,
Daniel Dekany
Post by mamathayv
Hi all,
Even i am facing the same problem while accessing attributes from xml with
namespace.
Please can any one help me.
Thanks in advance.
Regards,
Mamta
--
http://freemarker.624813.n4.nabble.com/Beginner-question-Accessing-XML-Attributes-via-Template-tp626522p4655157.html
Sent from the freemarker-user mailing list archive at Nabble.com.
------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
FreeMarker-user mailing list
https://lists.sourceforge.net/lists/listinfo/freemarker-user
gkamle
2015-07-07 13:11:30 UTC
Permalink
I am new to "smooks and freemarker".I want access elements in xml document.I
am getting this exception while acessing xml element.I am sending my code.

Exception:-
------------

For "${...}" content: Expected a string or something automatically
convertible to string (number, date or boolean), but this evaluated to a
sequence+hash (wrapper: f.e.dom.NodeListModel):
==> employee["first_name"] [in template "free-marker-template" at line
1, column 84]

----
Tip: This XML query result can't be used as string because for that it had
to contain exactly 1 XML node, but it contains 0 nodes. That is, the
constructing XML query has found no matches.
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: ${employee["first_name"]} [in template
"free-marker-template" at line 1, column 82]

----
Java stack trace (for programmers):
----
freemarker.core.NonStringException: [... Exception message was already
printed; see it above ...]
at freemarker.core.EvalUtil.coerceModelToString(EvalUtil.java:381)
at freemarker.core.Expression.evalAndCoerceToString(Expression.java:82)
at freemarker.core.DollarVariable.accept(DollarVariable.java:40)
at freemarker.core.Environment.visit(Environment.java:312)

The following are versions
java version : "1.7.0_45"
freemarker : 2.3.22
smooks : 1.6


javacode:-
-----------
package test;

import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.net.URI;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import org.milyn.Smooks;
import org.milyn.SmooksException;
import org.milyn.container.ExecutionContext;
import org.milyn.event.report.HtmlReportGenerator;
import org.milyn.io.StreamUtils;
import org.milyn.payload.StringResult;
import org.xml.sax.SAXException;


public class SmooksExample {
public SmooksExample() {
// TODO Auto-generated constructor stub
}
protected static void runSmooksNew() throws IOException, SAXException,
SmooksException {

try {
Long stTime = System.currentTimeMillis();
System.out.println(stTime + "==" + new Date());
Writer xmlResultWriter = new BufferedWriter(new FileWriter(new
File("C:\\Files\\SmookExample\\output_sax.dat")));
transCustomerCSV(new File("C:\\Files\\emp_namespace.xml"),
xmlResultWriter);
Long edTime = System.currentTimeMillis();
System.out.println(edTime + "==" + (edTime-stTime) + "===="+ new
Date());
String times = String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes(edTime-stTime),
TimeUnit.MILLISECONDS.toSeconds(edTime-stTime) -

TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(edTime-stTime))
);
System.out.println(times);
} finally {
//smooks.close();
}
}
public static void transCustomerCSV(File csvSourceReader, Writer
xmlResultWriter) throws IOException, SAXException {
File f = new File("C:/TEMPLATES/smooks-config.xml");
URI u = f.toURI();
Smooks smooks = new Smooks(u.getPath());
ExecutionContext ec = smooks.createExecutionContext();
smooks.filterSource(ec, new StreamSource(csvSourceReader), new
StreamResult(xmlResultWriter));
}
/**
* @param args
*/
public static void main(String[] args) throws IOException, SAXException,
SmooksException {
System.out.println("\n\n");
System.out.println("==============Message In==============");
SmooksExample.runSmooksNew();
System.out.println("======================================\n");
}
}


Smooks-config.xml
--------------------
<smooks-resource-list
xmlns:ftl="http://www.milyn.org/xsd/smooks/freemarker-1.1.xsd"
xmlns:core="http://www.milyn.org/xsd/smooks/smooks-core-1.3.xsd"
xmlns:jb="http://www.milyn.org/xsd/smooks/javabean-1.2.xsd"
xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd">
<params>
SAX
false
</params>
<core:namespaces>
<core:namespace prefix="empl" uri="http://www.example.com/employees"/>
</core:namespaces>
<resource-config selector="employee,first_name">
<resource>org.milyn.delivery.DomModelCreator</resource>
</resource-config>
<ftl:freemarker applyOnElement="first_name">
<ftl:template>
</ftl:template>
</ftl:freemarker>
</smooks-resource-list>

sample data xml file name: emp_namespace.xml:-
--------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<empl:employees xmlns:empl="http://www.example.com/employees">
<empl:employee id="1">
<empl:first_name>Bill</empl:first_name>
<empl:last_name>Adams</empl:last_name>
<empl:age>25</empl:age>
<empl:hire_date>12-06-1995</empl:hire_date>
<empl:title>Java programmer</empl:title>
<empl:DateCreated>
<empl:Year>1980</empl:Year>
<empl:Month>01</empl:Month>
<empl:Day>01</empl:Day>
</empl:DateCreated>
<empl:DateCompleted>
<empl:Year>1981</empl:Year>
<empl:Month>02</empl:Month>
<empl:Day>02</empl:Day>
</empl:DateCompleted>
</empl:employee>
<empl:employee id="2">
<empl:first_name>Mary</empl:first_name>
<empl:last_name>Jones</empl:last_name>
<empl:age>32</empl:age>
<empl:hire_date>22-09-2001</empl:hire_date>
<empl:title>Sales manager</empl:title>
<empl:DateCreated>
<empl:Year>1982</empl:Year>
<empl:Month>03</empl:Month>
<empl:Day>03</empl:Day>
</empl:DateCreated>
<empl:DateCompleted>
<empl:Year>1983</empl:Year>
<empl:Month>04</empl:Month>
<empl:Day>04</empl:Day>
</empl:DateCompleted>
</empl:employee>
</empl:employees>



--
View this message in context: http://freemarker.624813.n4.nabble.com/Beginner-question-Accessing-XML-Attributes-via-Template-tp626522p4655525.html
Sent from the freemarker-user mailing list archive at Nabble.com.
Continue reading on narkive:
Search results for '[FreeMarker-user] Beginner question: Accessing XML-Attributes via Template?' (Questions and Answers)
5
replies
what are programming languages?
started 2007-11-14 02:15:22 UTC
programming & design
Loading...