[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: element with namespace
This is a simple problem. All the elements in your input XML are in the default namespace http://www.foo.com/namespace/v1, which is declared by the statement xmlns="http://www.foo.com/namespace/v1". In your stylesheet, you are trying to match elements that are NOT in any namespace, therefore you are not getting the output you expect. You need to declare the namespace in your stylesheet and use it as such: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:v1="http://www.foo.com/namespace/v1" exclude-result-prefixes="v1"> <xsl:template match="/"> <Members> <xsl:apply-templates select="v1:Test/v1:People"/> </Members> </xsl:template> <xsl:template match="v1:People"> <xsl:for-each select="v1:Person"> <Member><xsl:value-of select="concat(substring(v1:LName,1,1),'.',v1:FName)"/></Member> </xsl:for-each> </xsl:template> </xsl:stylesheet> Here I'm assuming that there is no namespace for your Members or Member elements. FYI, the exclude-result-prefixes="v1" attribute ensures that the http://www.foo.com/namespace/v1 namespace doesn't show up in your output. Hth. Wes -----Original Message----- From: Venkateshwar Bommineni [mailto:vbommineni@xxxxxxxxxx] Sent: Monday, September 30, 2002 11:38 AM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: element with namespace Hi all, I am having a problem while trying to match root element which has namespace declaration. here is the test snippet i am trying .. Input XML is: ------------------------------------------------------- <?xml version="1.0"?> <Test xmlns="http://www.foo.com/namespace/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.foo.com/namespace/v1 C:\schema\definition.xsd"> <People> <Person> <FName>fname1</FName> <LName>lname1</LName> </Person> <Person> <FName>fname3</FName> <LName>lname3</LName> </Person> </People> </Test> Input XSL is: --------------------------------------------------------------- <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <Members> <xsl:apply-templates select="Test/People"/> </Members> </xsl:template> <xsl:template match="People"> <xsl:for-each select="Person"> <Member><xsl:value-of select="concat(substring(LName,1,1),'.',FName)"/></Member> </xsl:for-each> </xsl:template> </xsl:stylesheet> Output of above transformation results: --------------------------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <Members/> And if remove the namespace declaration from my input xml it works fine. So is that namespace declaration not allowed or is there any magic property i need to set in XSL to ignore namespace declarations? thanks in advance Venkat XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|