Viewing file: dp_20000310.py (5.63 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#Namespace tracer from Pawson, David <DPawson@rnib.org.uk> on 10 March 2000, with a version using the namespace axis from David Carlisle.
from Xml.Xslt import test_harness
sheet_1 = """<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns-test="http://ns1.com" xmlns:ns1="http://ns1.com" xmlns:ns2="http://ns2.com" xmlns:long-namespace="http://ns3.com" exclude-result-prefixes="ns1 ns2 long-namespace" >
<xsl:output method="xml" indent="yes"/>
<xsl:template match="*"> <!--<xsl:message><xsl:value-of select="name(.)"/></xsl:message>--> <tag>Namespace:<xsl:choose><xsl:when test="namespace-uri(.)"><xsl:value-of select="namespace-uri(.)"/> </xsl:when> <xsl:otherwise> Null namespace</xsl:otherwise> </xsl:choose> </tag> <tag>name: <xsl:value-of select="name(.)"/></tag> <tag>local-name: <xsl:value-of select="local-name(.)"/></tag> <tag>Content: <xsl:value-of select="text()"/></tag> <xsl:if test="./*"><xsl:apply-templates/></xsl:if> </xsl:template>
</xsl:stylesheet>"""
sheet_2 = """<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns-test="http://ns1.com" xmlns:ns1="http://ns1.com" xmlns:ns2="http://ns2.com" xmlns:long-namespace="http://ns3.com" exclude-result-prefixes="ns1 ns2 long-namespace" >
<xsl:output method="xml" indent="yes"/>
<xsl:template match="*"> <tag>Namespace:<xsl:choose><xsl:when test="namespace-uri(.)"><xsl:value-of select="namespace-uri(.)"/> </xsl:when> <xsl:otherwise> Null namespace</xsl:otherwise> </xsl:choose>
<!-- namespaces are unordered, sort is needed for comparision only --> <xsl:for-each select="namespace::*"> <xsl:sort select="name()"/> NS name: <xsl:value-of select="name(.)"/> NS value : <xsl:value-of select="."/> </xsl:for-each>
</tag> <xsl:if test="./*"><xsl:apply-templates/></xsl:if> </xsl:template>
</xsl:stylesheet> """
source_1="""<?xml version='1.0'?>
<!DOCTYPE ns1:ns-test [ <!ELEMENT ns1:ns-test (block)+> <!ATTLIST ns-test xmlns:ns1 CDATA #FIXED "http://ns1.com" > <!ELEMENT ns2:block (para)+> <!ATTLIST block xmlns:ns2 CDATA #FIXED "http://ns2.com" > <!ELEMENT para (#PCDATA)> <!ATTLIST para id ID #IMPLIED another CDATA #IMPLIED>]>
<ns1:ns-test xmlns:ns1= "http://ns1.com">
<block> <para>Para in block 1, main document namespace </para> </block>
<ns2:block xmlns:ns2="http://ns2.com"> <para>Para in block 2</para> </ns2:block>
<ns3:block xmlns:ns3="http://ns3.com"> <long:para xmlns:long="A long namespace uri">Para in block 3</long:para> </ns3:block>
</ns1:ns-test>"""
expected_1 = """<?xml version="1.0" encoding="UTF-8"?> <tag>Namespace:http://ns1.com</tag> <tag>name: ns1:ns-test</tag> <tag>local-name: ns-test</tag> <tag>Content:
</tag>
<tag>Namespace: Null namespace</tag> <tag>name: block</tag> <tag>local-name: block</tag> <tag>Content: </tag> <tag>Namespace: Null namespace</tag> <tag>name: para</tag> <tag>local-name: para</tag> <tag>Content: Para in block 1, main document namespace </tag>
<tag>Namespace:http://ns2.com</tag> <tag>name: ns2:block</tag> <tag>local-name: block</tag> <tag>Content: </tag> <tag>Namespace: Null namespace</tag> <tag>name: para</tag> <tag>local-name: para</tag> <tag>Content: Para in block 2</tag>
<tag>Namespace:http://ns3.com</tag> <tag>name: ns3:block</tag> <tag>local-name: block</tag> <tag>Content: </tag> <tag>Namespace:A long namespace uri</tag> <tag>name: long:para</tag> <tag>local-name: para</tag> <tag>Content: Para in block 3</tag>
"""
expected_2 = """<?xml version="1.0" encoding="UTF-8"?> <tag>Namespace:http://ns1.com NS name: ns1 NS value : http://ns1.com NS name: xml NS value : http://www.w3.org/XML/1998/namespace</tag>
<tag>Namespace: Null namespace NS name: ns1 NS value : http://ns1.com NS name: ns2 NS value : http://ns2.com NS name: xml NS value : http://www.w3.org/XML/1998/namespace</tag> <tag>Namespace: Null namespace NS name: ns1 NS value : http://ns1.com NS name: ns2 NS value : http://ns2.com NS name: xml NS value : http://www.w3.org/XML/1998/namespace</tag>
<tag>Namespace:http://ns2.com NS name: ns1 NS value : http://ns1.com NS name: ns2 NS value : http://ns2.com NS name: xml NS value : http://www.w3.org/XML/1998/namespace</tag> <tag>Namespace: Null namespace NS name: ns1 NS value : http://ns1.com NS name: ns2 NS value : http://ns2.com NS name: xml NS value : http://www.w3.org/XML/1998/namespace</tag>
<tag>Namespace:http://ns3.com NS name: ns1 NS value : http://ns1.com NS name: ns3 NS value : http://ns3.com NS name: xml NS value : http://www.w3.org/XML/1998/namespace</tag> <tag>Namespace:A long namespace uri NS name: long NS value : A long namespace uri NS name: ns1 NS value : http://ns1.com NS name: ns3 NS value : http://ns3.com NS name: xml NS value : http://www.w3.org/XML/1998/namespace</tag>
"""
def Test(tester): source = test_harness.FileInfo(string=source_1) sheet = test_harness.FileInfo(string=sheet_1) test_harness.XsltTest(tester, source, [sheet], expected_1, title='test 1')
source = test_harness.FileInfo(string=source_1) sheet = test_harness.FileInfo(string=sheet_2) test_harness.XsltTest(tester, source, [sheet], expected_2, title='test 2') return
|