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

Re: Detecting presence of attributes

Subject: Re: Detecting presence of attributes
From: Jeni Tennison <mail@xxxxxxxxxxxxxxxx>
Date: Mon, 5 Feb 2001 18:40:01 +0000
bar.sty download
Hi Peter,

> <thesis faculty="arts" department="history" options="foo bar blort">
>
> where foo.sty, bar.sty, and blort.sty are among the allowed options
> (ie declared entities in the DTD) for translation to LaTeX's
> \usepackage{foo,bar,blort}. Just a safety check to make sure a
> student doesn't go haywire.

Well, inspired by Dimitre's insight about id(), here's a solution that
doesn't involve recursive templates, as long as you don't mind
repeating in the stylesheet the list of allowed options:

<?xml version="1.0"?>
<!DOCTYPE xsl:stylesheet [
<!ATTLIST thesis:opt id ID #REQUIRED>
]>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:thesis="http://www.silmaril.ie/thesis"
                exclude-result-prefixes="thesis">

<thesis:opts>
  <thesis:opt id="foo" />
  <thesis:opt id="bar" />
</thesis:opts>

<xsl:template match="thesis">
   <xsl:text>Options: </xsl:text>
   <xsl:variable name="options" select="@options" />
   <!-- change the context to the stylesheet document -->
   <xsl:for-each select="document('')/*">
      <!-- get the id attributes of any options identified by ID -->
      <xsl:for-each select="id($options)/@id">
         <xsl:value-of select="." />
         <xsl:if test="position() != last()">, </xsl:if>
      </xsl:for-each>
   </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

It has the advantage that you can deal with bad values (e.g. if
'blort' wasn't actually allowed) within the stylesheet - if that's an
advantage.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/



 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.