xsddoc/src/net/sf/xframe/xsddoc/xslt overview-namespace.xsl,1.12,1.13 schema-index.xsl,1.13,1.14 util.xsl,1.14,1.15

Kurt Riede <[email protected]> Mon, 13 Dec 2004 13:26:19 +0000
Newsgroups gmane.text.xml.xframe.xsddoc.devel
Message-ID <[email protected]>
Update of /cvsroot/xframe/xsddoc/src/net/sf/xframe/xsddoc/xslt
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11040/src/net/sf/xframe/xsddoc/xslt

Modified Files:
	overview-namespace.xsl schema-index.xsl util.xsl 
Log Message:
avoid Stack Overflow with circular includes

Index: schema-index.xsl
===================================================================
RCS file: /cvsroot/xframe/xsddoc/src/net/sf/xframe/xsddoc/xslt/schema-index.xsl,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** schema-index.xsl	3 Nov 2004 17:25:05 -0000	1.13
--- schema-index.xsl	13 Dec 2004 13:26:17 -0000	1.14
***************
*** 94,97 ****
--- 94,98 ----
    -->
    <xsl:template match="xs:schema" mode="overview">
+     <xsl:param name="processedLocations" select="/xs:schema/@targetNamespace"/>
      <xsl:param name="ignore"/>
      <xsl:apply-templates select="xs:element | xs:attribute | xs:complexType | xs:simpleType | xs:group | xs:attributeGroup" mode="doc">
***************
*** 104,107 ****
--- 105,109 ----
      </xsl:for-each>
      <xsl:for-each select="xs:include | xs:redefine">
+       <xsl:variable name="schemaLocation" select="@schemaLocation"/>
        <xsl:variable name="redefinedComponents">
          <xsl:call-template name="tostring">
***************
*** 112,118 ****
          <xsl:with-param name="ignore" select="$ignore"/>
        </xsl:apply-templates>
!       <xsl:apply-templates select="document(@schemaLocation)/xs:schema" mode="overview">
!         <xsl:with-param name="ignore" select="$redefinedComponents"/>
!       </xsl:apply-templates>
      </xsl:for-each>
    </xsl:template>
--- 114,123 ----
          <xsl:with-param name="ignore" select="$ignore"/>
        </xsl:apply-templates>
!       <xsl:if test="not(contains($processedLocations, $schemaLocation))">
!         <xsl:apply-templates select="document($schemaLocation)/xs:schema" mode="overview">
!           <xsl:with-param name="processedLocations" select="concat($processedLocations, ' ', $schemaLocation)"/>
!           <xsl:with-param name="ignore" select="$redefinedComponents"/>
!         </xsl:apply-templates>
!       </xsl:if>
      </xsl:for-each>
    </xsl:template>

Index: overview-namespace.xsl
===================================================================
RCS file: /cvsroot/xframe/xsddoc/src/net/sf/xframe/xsddoc/xslt/overview-namespace.xsl,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** overview-namespace.xsl	3 Nov 2004 17:25:05 -0000	1.12
--- overview-namespace.xsl	13 Dec 2004 13:26:17 -0000	1.13
***************
*** 78,81 ****
--- 78,82 ----
    -->
    <xsl:template match="xs:schema" mode="overview">
+     <xsl:param name="processedLocations" select="/xs:schema/@targetNamespace"/>
      <xsl:param name="ignore"/>
      <xsl:apply-templates select="xs:element | xs:attribute | xs:complexType | xs:simpleType | xs:group | xs:attributeGroup" mode="doc">
***************
*** 88,91 ****
--- 89,93 ----
      </xsl:for-each>
      <xsl:for-each select="xs:include | xs:redefine">
+       <xsl:variable name="schemaLocation" select="@schemaLocation"/>
        <xsl:variable name="redefinedComponents">
          <xsl:call-template name="tostring">
***************
*** 96,102 ****
          <xsl:with-param name="ignore" select="$ignore"/>
        </xsl:apply-templates>
!       <xsl:apply-templates select="document(@schemaLocation)/xs:schema" mode="overview">
!         <xsl:with-param name="ignore" select="$redefinedComponents"/>
!       </xsl:apply-templates>
      </xsl:for-each>
    </xsl:template>
--- 98,109 ----
          <xsl:with-param name="ignore" select="$ignore"/>
        </xsl:apply-templates>
!       <xsl:for-each select="document(@schemaLocation)/xs:schema">
!         <xsl:if test="not(contains($processedLocations, $schemaLocation))">
!           <xsl:apply-templates select="." mode="overview">
!             <xsl:with-param name="processedLocations" select="concat($processedLocations, ' ', $schemaLocation)"/>
!             <xsl:with-param name="ignore" select="$redefinedComponents"/>
!           </xsl:apply-templates>
!         </xsl:if>
!       </xsl:for-each>
      </xsl:for-each>
    </xsl:template>

Index: util.xsl
===================================================================
RCS file: /cvsroot/xframe/xsddoc/src/net/sf/xframe/xsddoc/xslt/util.xsl,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** util.xsl	9 Dec 2004 13:09:19 -0000	1.14
--- util.xsl	13 Dec 2004 13:26:17 -0000	1.15
***************
*** 126,135 ****
    -->
    <xsl:template match="xs:schema" mode="hasComponents">
!     <xsl:if test="count(xs:complexType | xs:simpleType | xs:element | xs:attribute | xs:group | xs:attributeGroup | xs:include | xs:redefine) > 0">
!       <xsl:text>true</xsl:text>
!     </xsl:if>
!     <xsl:for-each select="xs:include">
!       <xsl:apply-templates select="document(@schemaLocation)/xs:schema" mode="hasComponents"/>
!     </xsl:for-each>
    </xsl:template>
    <!--
--- 126,147 ----
    -->
    <xsl:template match="xs:schema" mode="hasComponents">
!     <xsl:param name="processedLocations" select="/xs:schema/@targetNamespace"/>
!     <xsl:choose>
!       <xsl:when test="count(xs:complexType | xs:simpleType | xs:element | xs:attribute | xs:group | xs:attributeGroup | xs:include | xs:redefine/xs:*) > 0">
!         <xsl:text>true</xsl:text>
!       </xsl:when>
!       <xsl:otherwise>
!         <xsl:for-each select="xs:include | xs:redefine">
!           <xsl:variable name="schemaLocation" select="@schemaLocation"/>
!           <xsl:for-each select="document($schemaLocation)/xs:schema">
!             <xsl:if test="not(contains($processedLocations, $schemaLocation))">
!               <xsl:apply-templates select="." mode="hasComponents">
!                 <xsl:with-param name="processedLocations" select="concat($processedLocations, ' ', $schemaLocation)"/>
!               </xsl:apply-templates>
!             </xsl:if>
!           </xsl:for-each>
!         </xsl:for-each>
!       </xsl:otherwise>
!     </xsl:choose>
    </xsl:template>
    <!--



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/