Hi Marrow
Thanks for you rreply, Hope this can help you to help me ;)
the Desired result is the Familyarray count from 1 to n
contiguously, as you may noticed
Snoopy-a
Snoopy-c
Snoopy-l
Snoopy-o
are ref to other type so it need to generate array
elements as well
Many thanks your help
Paul.
<!-- beginning of schema ***********************-->
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="cobolTest_1.xsl"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="Snoopy-a" type="woodstock"/>
<xs:element name="Snoopy-b">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
<xs:pattern value="[0-9]{4}
(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Snoopy-c" type="woodstock"/>
<xs:element name="Snoopy-GRP">
<xs:complexType>
<xs:sequence>
<xs:element ref="Snoopy-d"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Snoopy-d">
<xs:complexType>
<xs:sequence>
<xs:element ref="Snoopy-e"
minOccurs="0"/>
<xs:element ref="Snoopy-f"
minOccurs="0"/>
<xs:element ref="Snoopy-g"
minOccurs="0"/>
<xs:element ref="Snoopy-h"
minOccurs="0"/>
<xs:choice>
<xs:element
ref="Snoopy-i" minOccurs="0"/>
<xs:element
ref="Snoopy-j" minOccurs="0"/>
</xs:choice>
<xs:element ref="Snoopy-k"
minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Snoopy-e">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="P"/>
<xs:enumeration value="F"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Snoopy-f">
<xs:simpleType>
<xs:restriction
base="xs:hexBinary">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Snoopy-g" type="xs:boolean"/>
<xs:element name="Snoopy-h" type="xs:string"/>
<xs:element name="Snoopy-i" type="xs:byte"/>
<xs:element name="Snoopy-j">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="F"/>
<xs:enumeration value="M"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Snoopy-k">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="9"/>
<xs:pattern value="[0-9]
*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Snoopy-l" type="woodstock"/>
<xs:element name="Nancy-a" type="charlieBrown"/>
<xs:element name="Nancy-b" type="charlieBrown"/>
<xs:element name="Nancy-c" type="charlieBrown"/>
<xs:element name="Nancy-d" type="charlieBrown"/>
<xs:element name="Nancy-e">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="9"/>
<xs:pattern value="[0-9]
{9}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Snoopy-m">
<xs:simpleType>
<xs:restriction
base="xs:hexBinary">
<xs:length value="300"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Nancy-6">
<xs:complexType>
<xs:sequence>
<xs:element ref="Nancy-a"/>
<xs:element ref="Nancy-b"/>
<xs:element ref="Nancy-c"/>
<xs:element ref="Nancy-d"/>
<xs:element ref="Nancy-e"/>
<xs:element ref="Snoopy-
e"/>
<xs:element ref="Snoopy-
GRP"/>
<xs:element ref="Snoopy-f"
minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="woodstock">
<xs:restriction base="xs:string">
<xs:enumeration value="F"/>
<xs:enumeration value="L"/>
<xs:enumeration value="E"/>
<xs:enumeration value="E"/>
<xs:enumeration value="D"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="charlieBrown">
<xs:restriction base="xs:string">
<xs:length value="8"/>
<xs:pattern value="[0-9]*"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="Snoopy-n">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="40"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Snoopy-o" type="woodstock"/>
</xs:schema>
<!-- end of schema ********************************-->
<!-- beginning of stylesheet ***********************-->
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="html" indent="no"/>
<xsl:template match="/">
<xsl:apply-templates select="xs:schema"/>
</xsl:template>
<xsl:template match="xs:schema">
<xsl:variable
name="flagToTag">ToTag</xsl:variable>
<xsl:apply-templates select="xs:element">
<xsl:with-param
name="flag" select="$flagToTag"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="xs:element">
<xsl:param name="flag"/>
<xsl:variable name="elementResult">
<xsl:value-of select='@name'/>
</xsl:variable>
<xsl:apply-templates select="//xs:simpleType">
<xsl:with-param name="nn" select="@name"/>
<xsl:with-param name="rr" select="@type"/>
</xsl:apply-templates>
<xsl:variable name="eleFlag">
<xsl:if test="boolean(@type)">
<xsl:apply-templates
select="//xs:simpleType">
<xsl:with-param
name="nn" select="@name"/>
<xsl:with-param
name="rr" select="@type"/>
</xsl:apply-templates>
</xsl:if>
</xsl:variable>
<xsl:if test="(boolean(string-length($eleFlag)
< 10))">
<xsl:value-of select="'MOVE1 '"/>
<xsl:value-of
select="($elementResult)" />
<xsl:value-of select="' TO
FamilyArray('" />
<xsl:number level="any"/>
<xsl:value-of select="')'" />
<xsl:value-of select="'
'"/>
</xsl:if>
</xsl:template>
<xsl:template match="xs:simpleType">
<xsl:param name="nn"/>
<xsl:param name="rr"/>
<xsl:if test="boolean($rr)">
<xsl:if test="@name=$rr">
<xsl:apply-templates
select="xs:restriction">
<xsl:with-param name="nn"
select="$nn"/>
</xsl:apply-templates>
</xsl:if>
</xsl:if>
</xsl:template>
<xsl:template match="xs:restriction">
<xsl:param name="nn"/>
<xsl:variable name="base" select="@base"/>
<xsl:if test="$base='xs:string' or
$base='xs:unsignedByte'">
<xsl:if test="boolean(xs:enumeration)">
<xsl:apply-templates
select="xs:enumeration">
<xsl:with-param name="nn"
select="$nn"/>
</xsl:apply-templates>
</xsl:if>
</xsl:if>
</xsl:template>
<xsl:template match="xs:enumeration">
<xsl:param name="nn"/>
<!-- when the name is passed in, pass-in value
will be used -->
<xsl:if test="boolean($nn)">
<xsl:value-of select="'MOVE5 '"/>
<xsl:value-of select="$nn"/>
<xsl:value-of select="'-'"/>
<xsl:value-of select="position()"/>
<xsl:value-of select="' TO FamilyArray
('" />
<xsl:number level="any"/>
<xsl:value-of select="')'" />
<xsl:value-of select="'
'"/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
<!-- end of stylesheet ***************************-->