Subject: RE: [xsl] Select entire XML doc From: "Lars Huttar" <lars_huttar@xxxxxxx> Date: Tue, 4 Mar 2003 13:57:22 -0600 |
> > > > > <xsl:template match="/"> > > > > > <textarea> > > > > > <xsl:copy-of select="*"/> > > > > > </textarea> > > > > > </xsl:template> > > > > ... > > What I meant was that because your <xsl:copy-of> used select="*", > > it would only operate on element children of the root node. > > So comments/PIs would only be copied if they were descendants > > of the document node, not if they were children of "/". > > You're right and I'm right. ;-) > > But I made the common mistake of confusing "document element" (or "root > element," as it's also sometimes called) with the "root node" as it applies > to XPath. OK, that clears things up a little. :-) > The root node of a well-formed XML document can have exactly one > document element. In XPath, selecting the "root node" (which is often used > interchangeably with root or document element) means selecting the root node > containing the specified context node. So when you write > > <xsl:template match="/"> > > what you're saying is "select the root node of the document *and* the > document element." Really? I thought <xsl:template match="/"> would match only the root node ("/"), and if you want to do anything with the document element you refer to it with the (implicit) child axis (e.g. "*" or "mydoc"): <xsl:template match="/"> <xsl:for-each select="*"> <p><xsl:value-of select="name()"/></p> </xsl:for-each> </xsl:template> which prints the name of the document element, not its children. > You could also do: > > <xsl:template match="/*"> > <xsl:copy-of select="."/> > </xsl:template> > > with the exact same results. The same results as <xsl:template match="/"> <xsl:copy-of select="*"/> </xsl:template> but not the same results as <xsl:template match="/"> <xsl:copy-of select="."/> </xsl:template> right? > Remember that the > transformation works on a > parsed XML input tree--not the raw document. So any child of > the root node > that isn't an element is removed, and if there is more than one child > element of the root node, the document is rejected by the > parser as being > malformed XML. Are you sure? Kay p. 63 seems to disagree: [speaking of "The Tree Model", not of the raw XML text] "For a *well-formed document* the children of the root node will be the document element *plus any comments or processing instructions* that come before or after the document element." (emphasis mine) Lars XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Select entire XML doc, David Carlisle | Thread | RE: [xsl] Select entire XML doc, Wendell Piez |
[xsl] Creating a XSL to return the , John Chen | Date | RE: [xsl] thoroughly confused about, Lars Huttar |
Month |