[
Lists Home |
Date Index |
Thread Index
]
> If schema support must be added to XSLT I think it should be very
> generic and non-intrusive. One idea I've been thinking about is to use
> a schema axis together with a suitable abbreviation. What nodes to expect
> on the schema axis should not be specified in the XSLT specification,
> but in separate specifications for each schema language.
> There could however be top level elements that provide a standard
> way to assoicate a stylesheet with a schema. Something
> along the following very hypothetical example:
>
> Schema fragment (in the RELAX NG compact syntax):
>
> value = element foo { xsd:int } | element bar { xsd:anyURI }
>
> Stylesheet fragment (assuming '#' for the abbreviation of 'schema::'):
>
> <xsl:load-schema href="myschema.rng"
> type="http://relaxng.org/ns/structure/1.0"/>
> <xsl:template match="schema::value">
> <xsl:text>Value: </xsl:text><xsl:apply-templates/>
> <xsl:template>
> <xsl:template match="#xsd:int">
> <xsl:text>Integer: </xsl:text><xsl:value-of select="."/>
> </xsl:template>
> <xsl:template match="#xsd:anyURI">
> <xsl:text>URI: </xsl:text><xsl:value-of select="."/>
> </xsl:template>
I like the general idea, but I personally don't think axes are the way to go.
The main reason is that I would like such facilities to support general
"infoset" annotation, and not just WXS types. For example, this could be the
basis for generic dispatch of hyperlinks if the infoset-annotation to
reconciling XLink and HLink is chosen.
I would personally lean more towards:
match="child::*[annotation(., "dt:type") = "xsd:int"]
Though, I recognize that in my approach, one would have to write the full URI,
not just the QName "xsd:int".
--
Uche Ogbuji Fourthought, Inc.
http://uche.ogbuji.net http://4Suite.org http://fourthought.com
Apache 2.0 API - http://www-106.ibm.com/developerworks/linux/library/l-apache/
Python&XML column: Tour of Python/XML - http://www.xml.com/pub/a/2002/09/18/py.
html
Python/Web Services column: xmlrpclib - http://www-106.ibm.com/developerworks/w
ebservices/library/ws-pyth10.html
|