xsl-list
[Top] [All Lists]

Schema keys and XSLT implementation

2005-07-27 18:26:05
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?

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



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