Hi All
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-->
<!--
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-->
<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