Subject: RE: RE: How to get output XML same as input XML?
From: David Carlisle <davidc@xxxxxxxxx>
Date: Sat, 12 Jul 2003 23:00:06 +0100
|
> So, if I am going to create a valid XML document from this,
> I need to open an element in
> one template but close it in another template describing the other child
> element.
Elements don't open and close in XSLT. They are nodes that are single
entities. opening and closing tags are a feature of the linearisation to a
file, not a feature of the trees on which XSLT works.
Your "so" doesn't follow, if I followed your premise (which I didn't
completely, a small example would have been clearer) then that sounds
normal XSLT work, but not by generating half a node in one
template and half in another.
> xsl:copy would not put the namespace definition for one of my
> attributes.
I have no idea what you mean here. XSLT doesn't directly deal with
namespace declarations. If you create or copy a node whose name is in a
namespace to the output tree, then the XSLT system will generate enough
namespace declarations so that when the output is re-parsed the
attributes and elements will be in the right namespaces, but this is an
automatic feature of the linearisation, not something directly under the
control of the stylesheet.
> Specifically, one of the child elements of the root node of the original XML
> document would have attributes from another namespace than the one that the
> element is defined under.
I suspect your terminology here is non standard. a well formed document
can only have one child element of the root node.
> xsl:copy does not provide a definition of the
> namespace of the attributes which belong to other namespaces. Specifically,
> the namespaces of the attributes were defined in the root element. I
> suspect that is why xsl:copy fails to make a valid document in this case,
> since a straight copy doesn't include a definition of something defined
> outside the stylesheet. But I am not sure. As I said, I did not try
> xsl:copy-of.
Sorry I can't guess what you mean here.
> http://hnpux3.physics.fsu.edu/~hone/hnpuxpadmin_2003-07-12_10-17-11.959.xml
That's a required result, if you also showed your input documents, I'm
sure someone would suggest a way of doing it in xslt.
In http://www.jlab.org/~hone/gridsubDemo/StartWrap.xsl
You say XSLT has problems outputting < which isn't the case at all.
If you output < using the xml or html output methods, then that
character will be output in a form legal in those formats (eg <)
however this stylesheet appears to be writing a perl script.
If you'd used xsl:output method="text" then when serialising to a text
stream < characters will be written out as < as you'd expect.
David
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|