xsl-list
[Top] [All Lists]

RE: Schema keys and XSLT implementation

2005-07-28 01:10:22

I have a XLST that reads XML from zap2it.com (via SOAP) and I 
declare several keys.  I was reading 
their schema and it also has similar 'xsd:key', 'xsd:keyref', 
and 'xsd:unique' elements.  My question 
is -- is my xsl:key statements redundant?  And can I just 
phrase a "key()" search function based on 
the schema, or is the schema for documentation only?

The keys defined in the schema are there for validation purposes, while the
keys defined in the stylesheet declare indexes for efficient access. They
have no relationship to each other.

A schema-aware XSLT processor could make use of the existence of keys in the
schema to create implicit indexes for efficient access in your stylesheet,
but the only schema-aware XSLT processor currently in existence (Saxon-SA)
doesn't (yet) do that.

An XSLT 1.0 processor such as libxslt is very unlikely to make any use of
schema information, though it could do so in theory.

Michael Kay
http://www.saxonica.com/



I have read "XSL Transformations" 
(http://www.w3.org/TR/xslt), but they dont mention a schema 
connection.

BTW, this is a general XSLT language question ... but if it 
depends on implementation I am using 
xmlsoft.org (aka. Gnome) libxslt v1.1.12.


These are my xsl:key statements:
   <xsl:key name="station_keyref_schedule" 
match="./ns1:schedules/ns1:schedule" use="@station" /> 
   <xsl:key name="program_key" 
match="./ns1:programs/ns1:program" use="@id" /> 
   <xsl:key name="genre_keyref" 
match="./ns1:genres/ns1:programGenre" use="@program" /> 
   <xsl:key name="crew_keyref" 
match="./ns1:productionCrew/ns1:crew" use="@program" /> 


And the relevant schema portion 
(http://docs.tms.tribune.com/tech/xml/schemas/tmsxtvd.xsd):

<xsd:key name="station_key"> 
   <xsd:selector xpath="./stations/station"/> 
   <xsd:field xpath="@id"/> 
</xsd:key> 
<xsd:keyref name="station_keyref_schedule" refer="tms:station_key"> 
   <xsd:selector xpath="./schedules/schedule"/> 
   <xsd:field xpath="@station"/> 
</xsd:keyref> 
<xsd:unique name="program_key"> 
   <xsd:selector xpath="./programs/program"/> 
   <xsd:field xpath="@id"/> 
</xsd:unique> 
<xsd:keyref name="crew_keyref" refer="tms:program_key"> 
   <xsd:selector xpath="./productionCrew/crew"/> 
   <xsd:field xpath="@program"/> 
</xsd:keyref> 
<xsd:keyref name="genre_keyref" refer="tms:program_key"> 
   <xsd:selector xpath="./genres/programGenre"/> 
   <xsd:field xpath="@program"/> 
</xsd:keyref> 


The XML outline is:

<xtvd from='2005-07-20T11:30:00Z' to='2005-07-21T00:00:00Z' 
schemaVersion='1.3' xmlns='urn:
TMSWebServices' 
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
xsi:schemaLocation='urn:
TMSWebServices 
http://docs.tms.tribune.com/tech/xml/schemas/tmsxtvd.xsd'>
...
<stations> 
  <station id="10398"> 
    
<callSign>KDAF</callSign><name>KDAF</name><fccChannelNumber>33
</fccChannelNumber><affiliate>WB 
Affiliate</affiliate> 
  </station> 
  <station id="10402"> 
    
<callSign>KDFW</callSign><name>KDFW</name><fccChannelNumber>4<
/fccChannelNumber><affiliate>Fox 
Affiliate</affiliate> 
  </station> 
</stations> 
<schedules><schedule program="SH6948700000" station="10398" 
time="2005-07-20T11:30:00Z" 
duration="PT00H30M"/> 
... 
<schedule program="SH1966900000" station="10402" 
time="2005-07-20T11:00:00Z" duration="PT01H00M"/> 
... 
</schedules> 
<programs> 
... 
<program id="EP0000510180"><title>A Different 
World</title><subtitle>When One Door Closes ...
<subtitle><description>A Japanese corporation woos Dwayne for 
his software; Whitley is pregnant; 
guests Diahann Carroll, Patti 
LaBelle.</description><showType>Series</showType><series>SH000051</
series><syndicatedEpisodeNumber>9216B</syndicatedEpisodeNumber
<originalAirDate>1993-05-08</
originalAirDate></program> 
... 
<program id="SH1966900000"><title>Good Day at 
6:00AM</title><description>Henderson, Ryan.</
description><showType>Series</showType><series>SH196690</serie
s><originalAirDate>2001-06-21</
originalAirDate></program> 
... 
</programs> 
<productionCrew><crew 
program="EP0000510180"><member><role>Actor</role><givenname>Jasmine</
givenname><surname>Guy</surname></member> 
... 
</crew> 
... 
</productionCrew> 
<genres><programGenre 
program="EP0000510180"><genre><class>Sitcom</class><relevance>
0</relevance></
genre></programGenre> 
... 
</genres> 
</xtvd>


Thx for any pointers ....
-- 
Rodman

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





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



<Prev in Thread] Current Thread [Next in Thread>