Subject: Re: [xsl] filter From: Paul <reganmian@xxxxxxxxx> Date: Tue, 3 Dec 2002 05:31:08 -0800 (PST) |
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[@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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] filter, Paul | Thread | RE: [xsl] filter, TSchutzerWeissmann |
[xsl] Nested Disk tree layout, ed . rolison | Date | [xsl] special character, Sachdeva, Rajeev |
Month |