Subject: Re: why dosen't it read the xml info? From: Jeni Tennison <Jeni.Tennison@xxxxxxxxxxxxxxxx> Date: Mon, 05 Jun 2000 18:24:12 +0100 |
Yonit, First, you should tidy up your code so that it is well-formed (i.e. giving an opening <a> tag just after the xsl:for-each and adding a closing </font> tag). These might just be copying errors, though, particularly as I'd have thought you'd get a lot sterner warnings if you had these in your real stylesheet! The source of your problem, though, is your use of namespaces. Within your source XML, you specify: <search xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> ... </search> This states that the default namespace (i.e. the namespace for elements for which no namespace is explicitly given) is 'urn:schemas-microsoft-com:xml-data'. That means that the 'search' element, and all its children, are within that namespace. Within your stylesheet, though, you haven't specified those namespaces. The stylesheet will look for a 'search' element with a null namespace, of which there aren't any in your document. There are three things that you can do to make it work. Firstly, you can specify a named namespace within the stylesheet, and specify that the elements you're searching for are within that namespace, e.g.: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:data="urn:schemas-microsoft-com:xml-data"> <xsl:template match="/"> <html> <body> <xsl:apply-templates select="data:search/data:type" /> <xsl:value-of select="data:search/data:type" /> <xsl:value-of select="data:search/data:auctions" /> sales ... </body> </html> </xsl:template> </xsl:stylesheet> Secondly, you can specify that as the default namespace, but make sure that all the html elements that you use are within an HTML namespace. Then you can use an xsl:namespace-alias element to make sure that your HTML elements aren't namespaced within your output: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="urn:schemas-microsoft-com:xml-data"> <xsl:namespace-alias stylesheet-prefix="html" result-prefix="#default" /> <xsl:template match="/"> <html:html> <html:body> <xsl:apply-templates select="search/type" /> <xsl:value-of select="search/type" /> <xsl:value-of select="search/auctions" /> sales ... </html:body> </html:html> </xsl:template> </xsl:stylesheet> Finally, you can think again about whether you need to specify namespaces in your source document in the first place. I hope that helps, Jeni Dr Jeni Tennison Epistemics Ltd, Strelley Hall, Nottingham, NG8 6PE Telephone 0115 9061301 ? Fax 0115 9061304 ? Email jeni.tennison@xxxxxxxxxxxxxxxx XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
why dosen't it read the xml info?, YonitL | Thread | RE: why dosen't it read the xml inf, Kay Michael |
Null Attributes Break xsl:key?, Bill Entwistle | Date | Re: How to get the preceding templa, Wendell Piez |
Month |