xsl-list
[Top] [All Lists]

RE: filter

2002-12-03 06:41:19
Paul,

Why not substitute
/xs:element/xs:complexType/xs:sequence/xs:element[(_at_)maxOccurs=5] for
xs:element[starts-with(@ref,'GRP')] ? 
It doesn't have to be '5', but it can't be a variable.

regards,
Tom

-----Original Message-----
From: Paul [mailto:reganmian(_at_)yahoo(_dot_)com]
Sent: 03 December 2002 13:31
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] filter


Can somebody give any hints on the key definition
from string filter to other fact, as I don't think 
a variable can be defined over the key.

many thanks
Paul
===========================
I had a filter question need help, many thanks in
advance !!

Instead of being filtered by
[starts-with(@ref,'GRP')]
Is there a way  use the fact that it is a
/xs:element/xs:complexType/xs:sequence/xs:element[(_at_)maxOccurs=

some value] (to identify/filter the 'GRP' element)

There are several places in the XSL(the XSL is 
for the schema in the back) using this filter :
<xsl:key name="byGRP"
match="xs:element[not(starts-with(@ref, 'GRP'))]"
use="generate-id(preceding::xs:element
      [starts-with(@ref,'GRP')][1])"/>

<xsl:key name="elements" match="xs:element" 
      use="generate-id((preceding-sibling::xs:element |
self::xs:element)
[starts-with(@ref,'GRP')][last()])"/>

<xsl:template match="xs:sequence">
...
      <xsl:for-each select="//xs:element[starts-with
(@ref,'GRP')]">
      ...
      <xsl:for-each select ="(xs:element |
xs:choice/xs:element | xs:sequence/xs:element |
xs:choice/xs:sequence/xs:element)[starts-with(@ref,
'GRP')][1]">
      ...
</xsl>



======== schema =======
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema";>
<xs:element name="snoopy-a">
      <xs:simpleType>
              <xs:restriction base="xs:sString">
                      <xs:length value="9"/>
                      <xs:pattern value="[0-9]*"/>
              </xs:restriction>
      </xs:simpleType>
</xs:element>
<xs:element name="snoopy-b">
      <xs:simpleType>
              <xs:restriction base="xs:string">
                      <xs:length value="2"/>
                      <xs:pattern value="[0-9]*"/>
              </xs:restriction>
      </xs:simpleType>
</xs:element>
<xs:element name="snoopy-c">
      <xs:simpleType>
              <xs:restriction base="xs:string">
                      <xs:length value="2"/>
                      <xs:pattern value="[0-9]*"/>
              </xs:restriction>
      </xs:simpleType>
</xs:element>
<xs:element name="snoopy-d">
      <xs:simpleType>
              <xs:restriction base="xs:string">
                      <xs:maxLength value="4"/>
                      <xs:pattern value="[a-z,A-Z,\s]*"/>
              </xs:restriction>
      </xs:simpleType>
</xs:element>
<xs:element name="snoopy-e">
      <xs:simpleType>
              <xs:restriction base="xs:string">
                      <xs:length value="2"/>
                      <xs:pattern value="[0-9]*"/>
              </xs:restriction>
      </xs:simpleType>
</xs:element>
<xs:element name="snoopy-f">
      <xs:simpleType>
              <xs:restriction base="xs:string">
                      <xs:length value="2"/>
                      <xs:pattern value="[0-9]*"/>
              </xs:restriction>
      </xs:simpleType>
</xs:element>
<xs:element name="rabbit-tele">
      <xs:simpleType>
              <xs:restriction base="xs:string">
                      <xs:length value="10"/>
                      <xs:pattern value="[0-9]*"/>
              </xs:restriction>
      </xs:simpleType>
</xs:element>
<xs:element name="rabbit-name">
      <xs:simpleType>
              <xs:restriction base="xs:string">
                      <xs:length value="2"/>
                      <xs:pattern value="[0-9]*"/>
              </xs:restriction>
      </xs:simpleType>
</xs:element>
<xs:element name="WOLF-tele">
      <xs:simpleType>
              <xs:restriction base="xs:string">
                      <xs:length value="10"/>
                      <xs:pattern value="[0-9]*"/>
              </xs:restriction>
      </xs:simpleType>
</xs:element>
<xs:element name="WOLF-name">
      <xs:simpleType>
              <xs:restriction base="xs:string">
                      <xs:length value="2"/>
                      <xs:pattern value="[0-9]*"/>
              </xs:restriction>
      </xs:simpleType>
</xs:element>
<xs:complexType name="rabbit">
      <xs:sequence>
              <xs:element ref="rabbit-tele" minOccurs="0"/>
              <xs:element ref="rabbit-name" minOccurs="0"/>
      </xs:sequence>
</xs:complexType>
<xs:element name="Harry-GROUP-ROW" type="rabbit"/>
<xs:element name="Harry-GROUP">
      <xs:complexType>
              <xs:sequence>
                      <xs:element ref="Harry-GROUP-ROW"
maxOccurs="unbounded"/>
              </xs:sequence>
      </xs:complexType>
</xs:element>
<xs:complexType name="WOLF">
      <xs:sequence>
              <xs:element ref="WOLF-tele" minOccurs="0"/>
              <xs:element ref="WOLF-name" minOccurs="0"/>
      </xs:sequence>
</xs:complexType>
<xs:element name="MickeyMouse-GROUP-ROW"
type="WOLF"/>
<xs:element name="MickeyMouse-GROUP">
      <xs:complexType>
              <xs:sequence>
                      <xs:element ref="MickeyMouse-GROUP"
maxOccurs="unbounded"/>
              </xs:sequence>
      </xs:complexType>
</xs:element-->

<!--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-->
<xs:element name="MSG">
      <xs:complexType>
                      <xs:sequence>
                              <xs:element ref="snoopy-a"/>
                              <xs:element ref="snoopy-b"/>
                              <xs:element ref="snoopy-c"/>
                              <xs:element ref="Harry-GROUP"/>
                              <xs:element ref="snoopy-d"/>
                              <xs:element ref="snoopy-e"/>
                              <xs:element ref="MickeyMouse-GROUP"/>
                              <xs:element ref="snoopy-f"/>
                              <xs:choice>
                                      <xs:element ref="snoopy-g"/>
                                      <xs:element ref="snoopy-h"/>
                              </xs:choice>
                              <xs:element ref="snoopy-i"/>
                              <xs:element ref="snoopy-j"/>
                              <xs:element ref="WoodStock-GROUP"/>
                      </xs:sequence>
      </xs:complexType>
</xs:element>
 
</xs:schema>

 
many thanks 

Paul
 


__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



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