Viewing file: dc_20000921.py (3.61 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#David Carlisle <davidc@nag.co.uk> demonstrates drawing NS data out of attributes
from Xml.Xslt import test_harness
sheet_1 = """\ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsd="http://www.w3.org/1999/XMLSchema" >
<xsl:strip-space elements="*"/>
<xsl:output method="text" />
<xsl:template match="xsd:element"> <xsl:text> Schema Element</xsl:text> <xsl:text> name: </xsl:text> <xsl:value-of select="@name"/> <xsl:text> type: </xsl:text>
<xsl:variable name="p"> <xsl:if test="contains(@type, ':')"> <xsl:value-of select="substring-before(@type, ':')"/> </xsl:if> </xsl:variable>
<xsl:variable name="n"> <xsl:choose> <xsl:when test="contains(@type, ':')"> <xsl:value-of select="substring-after(@type, ':')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="@type"/> </xsl:otherwise> </xsl:choose> </xsl:variable>
<xsl:variable name="ns" select="namespace::*[name()=$p]"/>
<xsl:text>{</xsl:text> <xsl:value-of select="$ns"/> <xsl:text>} </xsl:text> <xsl:value-of select="$n"/>
<xsl:text> Elements with the same type are: </xsl:text>
<xsl:for-each select="//xsd:element"> <xsl:variable name="p2"> <xsl:if test="contains(@type, ':')"> <xsl:value-of select="substring-before(@type, ':')"/> </xsl:if> </xsl:variable>
<xsl:variable name="n2"> <xsl:choose> <xsl:when test="contains(@type, ':')"> <xsl:value-of select="substring-after(@type, ':')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="@type"/> </xsl:otherwise> </xsl:choose> </xsl:variable>
<xsl:variable name="ns2" select="namespace::*[name()=$p2]"/>
<xsl:if test="$n=$n2 and $ns=$ns2"> <xsl:text> </xsl:text> <xsl:value-of select="@name"/> <xsl:text> </xsl:text> </xsl:if> </xsl:for-each>
</xsl:template>
</xsl:stylesheet>"""
source_1 = """<x>
<xsd:schema xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <xsd:element name="swissBankAccountNo" type="xsd:string"/> </xsd:schema>
<schema xmlns="http://www.w3.org/1999/XMLSchema"> <element name="luxembourgBankAccountNo" type="string"/> </schema>
<xsd:schema xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <xsd:element name="englishBankAccountNo" type="xsd:string2"/> </xsd:schema>
<schema xmlns="http://www.w3.org/1999/XMLSchema"> <element name="frenchBankAccountNo" type="string2"/> </schema>
<xsd:schema xmlns:xsd="file:/notschema"> <xsd:element name="swissBankAccountNo2" type="xsd:string"/> </xsd:schema>
<schema xmlns="file:/notschema"> <element name="luxembourgBankAccountNo2" type="string"/> </schema>
</x>"""
expected = """ Schema Element name: swissBankAccountNo type: {http://www.w3.org/1999/XMLSchema} string Elements with the same type are: swissBankAccountNo luxembourgBankAccountNo
Schema Element name: luxembourgBankAccountNo type: {http://www.w3.org/1999/XMLSchema} string Elements with the same type are: swissBankAccountNo luxembourgBankAccountNo
Schema Element name: englishBankAccountNo type: {http://www.w3.org/1999/XMLSchema} string2 Elements with the same type are: englishBankAccountNo frenchBankAccountNo
Schema Element name: frenchBankAccountNo type: {http://www.w3.org/1999/XMLSchema} string2 Elements with the same type are: englishBankAccountNo frenchBankAccountNo """
def Test(tester): source = test_harness.FileInfo(string=source_1) sheet = test_harness.FileInfo(string=sheet_1) test_harness.XsltTest(tester, source, [sheet], expected) return
|