xsl-list
[Top] [All Lists]

RE: Howto generate a list xpath queries that are used within a template?

2004-08-22 15:04:48
This is a good use case for a schema-aware stylesheet. 

The attributes that can hold XPath expressions are all described in the
schema for XSLT 2.0 stylesheets (published as part of the XSLT 2.0
specification) as being either of type xsl:expression or xsl:avt. This means
that if the source document (the input stylesheet) has been validated
against this schema, then you can select these attributes using an
expression of the form attribute(*, xsl:expression) | attribute(*, xsl:avt).

For further refinement you may want to exclude attributes of type
xsl:pattern (which is modelled in this schema as a subtype of
xsl:expression), and you may want to include AVT attributes only if they
contain curly braces.

This may be a rather more bleeding-edge solution than anything you had in
mind (the only product that will run it at present is the schema-aware
version of Saxon 8.0) but it will certainly give you the simplest code. Any
other solution will involve a long sequence of conditionals or template
rules testing all the attributes that are defined as expressions or AVTs
individually.

Michael Kay

-----Original Message-----
From: Joren Crauwels 
[mailto:joren(_dot_)crauwels(_at_)student(_dot_)tul(_dot_)edu] 
Sent: 22 August 2004 14:25
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Howto generate a list xpath queries that are 
used within a template?

Hi,

for a school project i have to generate a html file 
containing metadata
about an xslt file. So i have a file xslt2html.xsl that has 
can do this. A
thing that has to be possible is to generate a list of all 
the templates and
for each template i have to generate more detailed 
information. t has to be
possible to generate a list of used xpath queries within a 
template. For the
moment, i use a template like this to do that:

<xsl:template name="generateUsedXpathQueries">
        <xsl:variable name="bla1" select="'joren'"/>
        <xsl:choose>
            <xsl:when test="@select">
                <li><xsl:value-of select="@select"/></li>
            </xsl:when>
            <xsl:when test="@test">
                <li><xsl:value-of select="@test"/></li>
            </xsl:when>
        </xsl:choose>
</xsl:template>

The problem with this solution is that i will miss xpath 
queries that arent
used in a select or test attribute. Does anyone know how i 
can generate a
list that doesnt leave any xpath queries out? is there a way 
to check if the
value of an attribute is a xpath-query or not?

This is my first post so i hope it does reach someone :)


Greetz,
Joren


--+------------------------------------------------------------------
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>
--+--