Subject: RE: [xsl] XPath Expression in XSL Template Will Not Return Documen t Element with Attributesþ From: Joshua Glenn <joshglenn1@xxxxxxx> Date: Mon, 9 Feb 2009 17:42:11 -0600 |
Michael and Wendell, Thank you both for your replies. Your answer gave me the understanding I needed to solve this. I added a prefixed namespace declaration to my stylesheet and prefixed all my xpath expressions with that like Wendell said, now my stylesheet is working. Thanks again. Josh ---------------------------------------- > Date: Mon, 9 Feb 2009 18:31:19 -0500 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > From: wapiez@xxxxxxxxxxxxxxxx > Subject: Re: [xsl] XPath Expression in XSL Template Will Not Return Documen t Element with Attributes~ > > Joshua, > > Welcome to XSL-List. > > At 05:03 PM 2/9/2009, you wrote: >>Listmembers, I have a problem creating an appropriate XPath >>expression in a XSL file, and have been unable to find a solution. >>Here the Scenario: I have an xml file output from asp.net >>xmlserializer class. It outputs the Document Element "Catalog" with >>three attributes pertaining to XML namespaces. >> >>the catalog tag looks like this (markup removed): >> >>Catalog >>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>xmlns:xsd="http://www.w3.org/2001/XMLSchema" > > First off, a point of terminology. In namespace-aware XML, attributes > that start "xmlns" aren't attributes in the normal sense, and don't > appear as such in the data model. They are namespace declarations, > which affect the way elements are named (specifically, by allowing us > to differentiate families of elements and attributes with prefixes on > their names). > > Second, while you say you have three attributes, you've only pasted > in two. The third might be the source of the problem. > > In particular, if you have a (pseudo-)attribute named "xmlns", this > is a namespace declaration for the "null" or unprefixed namespace -- > which has the effect of placing unprefixed elements, such as > "Catalog", into this namespace. > > The tricky thing is that when this is the case, XSLT has no way of > addressing the element, since you ordinarily do not want to bind > unprefixed names in XSLT to a namespace. (If you do, it's going to > affect elements in your *result* XML, without helping to address the > elements in your *source* XML, since XSLT addresses the source data > via XPath, which is to say, only as attribute values in the XSLT-as-XML.) > > The solution is therefore to declare a namespace with a prefix in > your stylesheet, and use that to address the elements. > > So if your source data has: > > Catalog xmlns="http://my.namespace.com" > > your stylesheet would have a declaration > xmlns:n="http://my.namespace.com" (probably at the very top, on the > xsl:stylesheet element; use any prefix you like, 'n' is my choice), > and thence you would say > > ... xsl:apply-templates select="n:Catalog" ... > > and your stylesheet would then work with your (namespaced) input. > > I hope that helps. > > Cheers, > Wendell > >>I have created an XSL file to restructure the information for use in >>a ASP.NET GridView Control. >> >> xsl:template match="/" >> xsl:apply-templates select="Catalog" >> xsl:template> >> >>It works, but only if I remove the attributes from the Element. I >>need to know how to format the xsl:template match="Catalog" xpath >>expression in the XSL file to match that tag, even if it has attributes. > > > ====================================================================== > Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx > Mulberry Technologies, Inc. http://www.mulberrytech.com > 17 West Jefferson Street Direct Phone: 301/315-9635 > Suite 207 Phone: 301/315-9631 > Rockville, MD 20850 Fax: 301/315-8285 > ---------------------------------------------------------------------- > Mulberry Technologies: A Consultancy Specializing in SGML and XML > ======================================================================
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XPath Expression in XSL T, Wendell Piez | Thread | [xsl] Fwd: Moving an Element to new, arut che |
Re: [xsl] XPath Expression in XSL T, Wendell Piez | Date | [xsl] Fwd: Moving an Element to new, arut che |
Month |