RE: [xsl] DTD Namespaces and xslt output problems

Subject: RE: [xsl] DTD Namespaces and xslt output problems
From: "JSRawat" <jrawat@xxxxxxxxxxxxxx>
Date: Thu, 14 Jul 2011 14:17:46 +0530
Thanks!!!

-----Original Message-----
From: Brandon Ibach [mailto:brandon.ibach@xxxxxxxxxxxxxxxxxxx]
Sent: Thursday, July 14, 2011 12:49 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] DTD Namespaces and xslt output problems

Your sample document, as well as any document conforming to the given
DTD, has a default namespace declared
(http://www.wiley.com/namespaces/wiley).  However, the template match
patterns in your XSLT are attempting to match elements that are not in
any namespace.

You either need to declare a prefix for the input document's default
namespace and use that in the match patterns or use the
"xpath-default-namespace" attribute, probably on the "xsl:stylesheet"
element, to declare the namespace for the unprefixed element names in
your match patterns.

-Brandon :)


On Thu, Jul 14, 2011 at 2:59 AM, JSRawat <jrawat@xxxxxxxxxxxxxx> wrote:
> Hi All,
> I have copied a sample DTD. I am not able to convert following INPUT using
> following XSLT. If I comment DocType and Namespaces Attributes of
> <component> in the input file, then I am getting the required output. I
want
> to know the reason behind this and what should I do in the xslt so that I
> will get the required result. Thanks in advance.
>
> SAMPLE DTD
> <!ELEMENT component (header,body)>
> <!ATTLIST component
>    xmlns:wiley CDATA #FIXED "http://www.wiley.com/namespaces/wiley/wiley";
>        xmlns:cms CDATA #FIXED "http://cms.wiley.com";
>        xmlns:dctm CDATA #FIXED "http://www.documentum.com";
>        dctm:obj_id CDATA #IMPLIED
>        dctm:obj_status CDATA #IMPLIED
>        dctm:version_label CDATA #IMPLIED
>        dctm:link_version_label CDATA #IMPLIED
>        cms:chunk (yes|no) #IMPLIED
>        cms:link CDATA #IMPLIED
>        xml:id ID #IMPLIED
>        version (1.0.3) #REQUIRED
>        xmlns CDATA #FIXED "http://www.wiley.com/namespaces/wiley";>
>
> <!ELEMENT header (publicationMeta,contentMeta)>
> <!ATTLIST header
>        xmlns:cms CDATA #FIXED "http://cms.wiley.com";
>        xmlns:dctm CDATA #FIXED "http://www.documentum.com";
>        dctm:obj_id CDATA #IMPLIED
>        dctm:obj_status CDATA #IMPLIED
>        dctm:version_label CDATA #IMPLIED
>        dctm:link_version_label CDATA #IMPLIED
>        xmlns CDATA #FIXED "http://www.wiley.com/namespaces/wiley";>
>
> <!ELEMENT body (section)>
> <!ATTLIST body
>        xmlns:cms CDATA #FIXED "http://cms.wiley.com";
>        xmlns:dctm CDATA #FIXED "http://www.documentum.com";
>        dctm:obj_id CDATA #IMPLIED
>        dctm:obj_status CDATA #IMPLIED
>        dctm:version_label CDATA #IMPLIED
>        dctm:link_version_label CDATA #IMPLIED
>        xmlns CDATA #FIXED "http://www.wiley.com/namespaces/wiley";>
>
> <!ELEMENT contentMeta (title)>
> <!ATTLIST contentMeta
>        xmlns:cms CDATA #FIXED "http://cms.wiley.com";
>        xmlns:dctm CDATA #FIXED "http://www.documentum.com";
>        dctm:obj_id CDATA #IMPLIED
>        dctm:obj_status CDATA #IMPLIED
>        dctm:version_label CDATA #IMPLIED
>        dctm:link_version_label CDATA #IMPLIED
>        xmlns CDATA #FIXED "http://www.wiley.com/namespaces/wiley";>
>
> <!ELEMENT publicationMeta (doi)>
> <!ATTLIST publicationMeta
>        xmlns:cms CDATA #FIXED "http://cms.wiley.com";
>        xmlns:dctm CDATA #FIXED "http://www.documentum.com";
>        role CDATA #IMPLIED
>        dctm:obj_id CDATA #IMPLIED
>        dctm:obj_status CDATA #IMPLIED
>        dctm:version_label CDATA #IMPLIED
>        dctm:link_version_label CDATA #IMPLIED
>        cms:chunk (yes|no) #IMPLIED
>        cms:link CDATA #IMPLIED
>        position CDATA #IMPLIED
>        accessType CDATA #IMPLIED
>        xmlns CDATA #FIXED "http://www.wiley.com/namespaces/wiley";>
>
> <!ELEMENT section (p)>
> <!ATTLIST section
>        xmlns:cms CDATA #FIXED "http://cms.wiley.com";
>        xmlns:dctm CDATA #FIXED "http://www.documentum.com";
>        dctm:obj_id CDATA #IMPLIED
>        dctm:obj_status CDATA #IMPLIED
>        dctm:version_label CDATA #IMPLIED
>        dctm:link_version_label CDATA #IMPLIED
>        xmlns CDATA #FIXED "http://www.wiley.com/namespaces/wiley";>
>
> <!ELEMENT doi (#PCDATA)>
> <!ELEMENT title (#PCDATA)>
> <!ELEMENT p (#PCDATA)*>
>
> INPUT
> <?xml version="1.0"?>
> <!DOCTYPE component SYSTEM "sample.dtd"> <component version="1.0.3"
> xmlns:wiley="http://www.wiley.com/namespaces/wiley/wiley";
> xmlns="http://www.wiley.com/namespaces/wiley"; xml:id="MBO31"> <header>
>  <publicationMeta>
>    <doi>10.1111/1432-1033</doi>
>  </publicationMeta>
>  <contentMeta>
>   <title>Title text</title>
>  </contentMeta>
> </header>
> <body>
>  <section>
>  <p>Paragraph text</p>
>  </section>
> </body>
> </component>
>
> XSLT
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>                xmlns:xs="http://www.w3.org/2001/XMLSchema";
>                xmlns:wiley="http://www.wiley.com/namespaces/wiley/wiley";
>                xmlns:cms="http://cms.wiley.com";
>                xmlns:dctm="http://www.documentum.com";
>                exclude-result-prefixes="xs wiley cms dctm"
>                version='2.0'>
>
> <xsl:strip-space elements="*"/>
> <xsl:output method="xml" indent="yes"/>
>
> <xsl:template match="component">
>  <html>
>  <head><title><xsl:value-of
> select="header/contentMeta/title"/></title></head>
>  <body><xsl:apply-templates/></body>
>  </html>
> </xsl:template>
>
> <xsl:template match="header">
>  <xsl:apply-templates/>
> </xsl:template>
>
> <xsl:template match="publicationMeta"/>
>
> <xsl:template match="contentMeta">
>  <div class="fm">
>  <xsl:apply-templates/>
>  </div>
> </xsl:template>
>
> <xsl:template match="body">
>  <div class="bdy">
>  <xsl:apply-templates/>
>  </div>
> </xsl:template>
>
> <xsl:template match="p">
>  <p>
>  <xsl:apply-templates/>
>  </p>
> </xsl:template>
>
> <xsl:template match="title">
>  <h1>
>  <xsl:apply-templates/>
>  </h1>
> </xsl:template>
>
> </xsl:stylesheet>
>
> CURRENT OUTPUT
> <?xml version="1.0" encoding="UTF-8"?>10.1111/1432-1033Title textParagraph
> text
>
> REQUIRED OUTPUT
> <?xml version="1.0" encoding="UTF-8"?>
> <html>
>   <head>
>      <title>Title text</title>
>   </head>
>   <body>
>      <div class="fm">
>         <h1>Title text</h1>
>      </div>
>      <div class="bdy">
>         <p>Paragraph text</p>
>      </div>
>   </body>
> </html>

Current Thread