[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Matching on elements from namespaces

Subject: Matching on elements from namespaces
From: zun@xxxxxxxxxxxxxx
Date: Thu, 21 Oct 1999 16:31:20 -0400 (EWT)
indesign namespaces
Hi everyone,

I've run across two interesting issues in matching elements from
namespaces. The end goal is to have several stylesheets, each of which
process elements from a particular namespace, and then have a master
stylesheet which imports these stylesheets.

For example, I might want an XHTML stylesheet and a MathML stylesheet
which when combined together will generate HTML from a mixed XHTML/MathML
document.

What I'm finding is that writing the XHTML stylesheet is cumbersome.  With
the latest version of XT and the following source:

<html xmlns="http://www.w3.org/TR/xhtml1/strict">
<head>
<title>Example page</title>
</head>
<body>Some stuff</body>
</html>

I have to write a stylesheet like the following:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"
                xmlns:xhtml="http://www.w3.org/TR/xhtml1/strict">
<xsl:output method="html"/>
<xsl:template match="/xhtml:html/xhtml:body">
  <xsl:copy-of select="text()|xhtml:*"/>
</xsl:template>
</xsl:stylesheet>

Note the nasty match and select expressions.  Now according to XPath
section 2.3 Node Tests, 

        A QName in the node test is expanded into an expanded-name using
the namespace declarations from the
        expression context. This is the same way expansion is done for
element type names in start and end-tags except that
        the default namespace declared with xmlns is not used: if the
QName does not have a prefix, then the namespace
        URI is null (this is the same way attribute names are expanded).

For future versions of XSLT/XPath, what do you feel should be the best way
to reduce the clutter?  How about an inputns attribute, so I can write
something like:

<xsl:template match="/html/body" inputns="http://www.w3.org/TR/xhtml1/strict">
  <xsl:copy-of select="text()|*"/>
</xsl:template>

or an input-prefix attribute:
<xsl:template match="/html/body" input-prefix="xhtml">
  <xsl:copy-of select="text()|*"/>
</xsl:template>

The second issue relates to my desire for having a separate stylesheet per
namespace.  Right now, both xsl:include and xsl:import must be top-level
elements.  If I have several hundred namespaces this can get unwieldy and
so I would like to have a facility to include only those stylesheets which
are currently applicable to the document at hand.  That is, perhaps a top
level element to indicate a mapping between namespace and stylesheet.

Comments?

. . . Sean.






 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.