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

Re: Objections to / uses of PSVI?


psvi example
Ron,

> That's one reason that I asked how people intended to use the PSVI.
> I find it interesting that the answer has, so far, been silence.

I can think of three ways in which I'd like to use information
available in the PSVI within XSLT:

1. I'd like to be able to have a template that matches all elements in
a certain group, for example "all block elements". Mostly those groups
should be formed around substitution groups, but all elements in that
group having the same type would be another way of doing it.

Here's a real-world example. I have some document-oriented XML in
which things like lists and block quotes can be embedded within
paragraphs, and I want to transform it to HTML, where that's not
allowed. With vanilla XML+XSLT 2.0, I can do something like:

<xsl:function name="my:is-block-element">
  <xsl:result select="self::orderedList | self::unorderedList |
                      self::definitionList | self::blockquote |
                      ..." />
</xsl:function>

<xsl:template match="para">
  <xsl:for-each-group select="node()"
                      group-adjacent="my:is-block-element()">
    <xsl:choose>
      <xsl:when test="my:is-block-element()">
        <xsl:apply-templates select="current-group()" />
      </xsl:when>
      <xsl:otherwise>
        <p>
          <xsl:apply-templates select="current-group()" />
        </p>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:for-each-group>
</xsl:template>

I'd like the fact that the various "block-level" elements were
"block-level" elements to be something recorded declaratively, in a
schema, rather than procedurally, as code. Importantly, the assignment
of "block-level" status is something that's only relevant in the
context of this transformation to HTML. If I was transforming to
DocBook, for example, there might be a different classification.

2. Schemas seem like a good place to store information that's used
across transformations, such as the mapping between codes and full
values. I'd like to have access to the PSVI so that I can have access
to the contents of appinfo elements from within the stylesheet. I gave
the following example on XSL-List yesterday:

  <flavour>CHC</flavour>

and:

  <xs:element name="flavour" default="VNL">
    <xs:simpleType>
      <xs:annotation>
        <xs:appinfo>
          <flavour code="VNL">Vanilla</flavour>
          <flavour code="CHC">Chocolate</flavour>
          <flavour code="MNT">Mint</flavour>
          <flavour code="CFE">Coffee</flavour>
        </xs:appinfo>
      </xs:annotation>
      <xs:restriction base="xs:token">
        <xs:enumeration value="VNL" />
        <xs:enumeration value="CHC" />
        <xs:enumeration value="MNT" />
        <xs:enumeration value="CFE" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

leading to the text:

  Your favourite ice cream is Chocolate

3. I'd like keys to get automatically set up based on the identity
constraints in the PSVI. Rather than having to write:

<xsl:key name="lessons"
         match="lesson"
         use="concat(generate-id(parent::class), '+',
                     @date, '+', subject)" />

I'd like to have the following in the schema:

<xs:element name="class" type="classType">
  <xs:key name="lessons">
    <xs:selector xpath="lesson" />
    <xs:field xpath="@date" />
    <xs:field xpath="subject" />
  </xs:key>
</xs:element>

This is particularly because it's easy to scope keys in XML Schema
whereas it's pretty fiddly with XSLT; also because XML Schema keys
have multiple fields.

Cheers,

Jeni

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


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
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

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.