xsl-list
[Top] [All Lists]

Re: [xsl] Namespaces best practice in XML

2006-04-04 06:44:05
On 4/4/06, tom tom <tomxsllist(_at_)hotmail(_dot_)com> wrote:
My XML Source has a default namespace and never uses prefixes. I am writing
a stylesheet which  transforms this into XHTML. In the XSLT I (ideally)
never want to prefix any XHTML output elements or any source XML element
references.

You will have to do one or the other, as there is only one default
namespace, unless you use two passes with the second pass to put all
the output elements in the xhtml namespace.

eg:

Store the first pass in a variable:

<xsl:variable name="first_pass">
  <xsl:apply-templates/>
</xsl:variable>

Use an identity template put all the elements in the xhtml namespace:

<xsl:template match="*" mode="xhtml">
        <xsl:element name="{local-name()}" 
namespace="http://www.w3.org/1999/xhtml";>
                <xsl:copy-of select="@*"/>
                <xsl:apply-templates mode="xhtml"/>
        </xsl:element>
</xsl:template>

Generate your output by applying the identity template to the first pass:

<xsl:template match="/">
  <xsl:for-each select="$first_pass">
    <xsl:apply-templates mode="xhtml"/>
  </xsl:for-each>
</xsl:template>


cheers
andrew

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--