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/