Viewing file: test_output.py (7.52 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
from Xml.Xslt import test_harness
specs = {'XML' : [], 'HTML' : [], 'Text' : []}
# XML Output [1] - defaults sheet = """<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" version="1.0"/>
<xsl:template match="/"> <docelem> <foo> <xsl:text>]]</xsl:text> <xsl:text>></xsl:text> </foo> <bar> <xsl:text>]</xsl:text> <xsl:text>></xsl:text> </bar> <foobar> <xsl:text><&]]</xsl:text> <xsl:text>!</xsl:text> </foobar> </docelem> </xsl:template>
</xsl:stylesheet>"""
source = """<foo>dummy</foo>"""
expected = """<?xml version='1.0' encoding='UTF-8'?> <docelem><foo>]]></foo><bar>]></bar><foobar><&]]!</foobar></docelem>"""
specs['XML'].append((sheet, source, expected))
# XML Output [2] - standalone no sheet = """<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" version="1.0" standalone="no"/> <xsl:output doctype-system="Xml/Core/addr_book.dtd"/>
<xsl:template match="/"> <foo/> </xsl:template>
</xsl:stylesheet>"""
source = """<foo>dummy</foo>"""
expected = """<?xml version='1.0' encoding='UTF-8' standalone='no'?> <!DOCTYPE foo SYSTEM "Xml/Core/addr_book.dtd"> <foo/>"""
specs['XML'].append((sheet, source, expected))
# XML Output [3] - system doctype sheet = """<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" version="1.0" standalone="no" doctype-system="Xml/Core/addr_book.dtd"/>
<xsl:template match="/"> <foo/> </xsl:template>
</xsl:stylesheet>"""
source = """<foo>dummy</foo>"""
expected = """<?xml version='1.0' encoding='UTF-8' standalone='no'?> <!DOCTYPE foo SYSTEM "Xml/Core/addr_book.dtd"> <foo/>"""
specs['XML'].append((sheet, source, expected))
# XML Output [4] - cdata elements sheet = """<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:spam="http://spam.com" version="1.0" >
<xsl:output method="xml" cdata-section-elements="foo spam:bar"/>
<xsl:template match='/'> <docelem> <foo> <![CDATA[<foo output>]]> </foo> <spam:bar> <![CDATA[<bar output>]]> </spam:bar> <bar> <![CDATA[<plain bar output>]]> </bar> <xsl:apply-templates/> </docelem> </xsl:template>
<xsl:template match='@*|node()' priority='-1'> <xsl:copy> <xsl:apply-templates select='@*|node()'/> </xsl:copy> </xsl:template>
</xsl:stylesheet>"""
source = """<out xmlns:spam="http://spam.com"><foo><![CDATA[<source foo output>]]></foo><spam:bar><![CDATA[<source bar output>]]></spam:bar></out>"""
expected = """<?xml version='1.0' encoding='UTF-8'?> <docelem xmlns:spam='http://spam.com'><foo><![CDATA[ <foo output> ]]></foo><spam:bar><![CDATA[ <bar output> ]]></spam:bar><bar> <plain bar output> </bar><out><foo><![CDATA[<source foo output>]]></foo><spam:bar><![CDATA[<source bar output>]]></spam:bar></out></docelem>"""
specs['XML'].append((sheet, source, expected))
# HTML Output [1] - defaults sheet = """<?xml version="1.0" encoding='iso-8859-1'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html"/>
<xsl:template match="/"> <html><body><p>spam – ÿ eggs</p></body></html> </xsl:template>
</xsl:stylesheet>"""
source = """<foo>dummy</foo>"""
expected = """<html> <body> <p>spam \226 ÿ eggs</p> </body> </html>"""
specs['HTML'].append((sheet, source, expected))
# HTML Output [2] - system doctype sheet = """<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" doctype-system="Xml/Core/addr_book.dtd"/>
<xsl:template match="/"> <foo/> </xsl:template>
</xsl:stylesheet>"""
source = """<foo>dummy</foo>"""
expected = """<!DOCTYPE foo SYSTEM "Xml/Core/addr_book.dtd"> <foo></foo>"""
specs['HTML'].append((sheet, source, expected))
# HTML Output [3] - system and public doctype sheet = """<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" doctype-system="Xml/Core/addr_book.dtd" doctype-public="public-id"/>
<xsl:template match="/"> <foo/> </xsl:template>
</xsl:stylesheet>"""
source = """<foo>dummy</foo>"""
expected = """<!DOCTYPE foo PUBLIC "public-id" "Xml/Core/addr_book.dtd"> <foo></foo>"""
specs['HTML'].append((sheet, source, expected))
# HTML Output [4] - bit 'o twist (US ASCII encoding) sheet = """\ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" > <xsl:output method="html" encoding="us-ascii"/>
<xsl:template match="/"> <html> [ ] </html> </xsl:template > </xsl:stylesheet> """
source = """<foo>dummy</foo>"""
expected = """<html> [ ] </html> """ specs['HTML'].append((sheet, source, expected))
# HTML Output [5] - no version (default='4.0') sheet = """\ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" > <xsl:output method="html"/>
<xsl:template match="/"> <html> [Α] </html> </xsl:template > </xsl:stylesheet> """
source = """<foo>dummy</foo>"""
expected = """<html> [Α] </html> """ specs['HTML'].append((sheet, source, expected))
# HTML Output [6] - version='3.2' sheet = """\ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" > <xsl:output method="html" version="3.2"/>
<xsl:template match="/"> <html> [Α] </html> </xsl:template > </xsl:stylesheet> """
source = """<foo>dummy</foo>"""
expected = """<html> [Α] </html> """ specs['HTML'].append((sheet, source, expected))
# HTML Output [7] - version='4.0' sheet = """\ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" > <xsl:output method="html" version="4.0"/>
<xsl:template match="/"> <html> [Α] </html> </xsl:template > </xsl:stylesheet> """
source = """<foo>dummy</foo>"""
expected = """<html> [Α] </html> """ specs['HTML'].append((sheet, source, expected))
# HTML Output [8] - version='10.1' sheet = """\ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" > <xsl:output method="html" version="10.1"/>
<xsl:template match="/"> <html> [Α] </html> </xsl:template > </xsl:stylesheet> """
source = """<foo>dummy</foo>"""
expected = """<html> [Α] </html> """ specs['HTML'].append((sheet, source, expected))
# Text Output [1] - xsl:text stuff sheet = """<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" encoding="iso-8859-1"/>
<xsl:template match="/"> <xsl:text/>a<xsl:text> </xsl:text>b<xsl:text> </xsl:text>c<xsl:text> </xsl:text>d<xsl:text/> </xsl:template>
</xsl:stylesheet>"""
source = """<foo>dummy</foo>"""
expected = "a b\240c\012d"
specs['Text'].append((sheet, source, expected))
def Test(tester): for (method, tests) in specs.items(): test = 1 for (sheet, source, expected) in tests: source = test_harness.FileInfo(string=source) sheet = test_harness.FileInfo(string=sheet) test_harness.XsltTest(tester, source, [sheet], expected, title="%s output method test %d" % (method, test)) test = test + 1 return
|