test_key.py :  » XML » 4Suite » 4Suite-XML-1.0.2 » test » Xml » Xslt » Core » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » XML » 4Suite 
4Suite » 4Suite XML 1.0.2 » test » Xml » Xslt » Core » test_key.py
from Xml.Xslt import test_harness

import os
from Ft.Lib import Uri
from Ft.Xml.XPath import RuntimeException

BASE = os.getcwd()
if BASE[-1] != os.sep:
    BASE += os.sep
BASE = Uri.OsPathToUri(BASE)


SHEET_2 = """\
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">

  <xsl:variable name="sty-doc" select="document('')"/>

  <xsl:key name='name' match='*' use='name()'/>

  <xsl:template match="/">
    <xsl:for-each select=".">
      Entries from keys: <xsl:value-of select="count(key('name', 'ENTRY'))"/>
      Template from keys: <xsl:value-of select="count(key('name', 'xsl:template'))"/>
    </xsl:for-each>
    <xsl:for-each select="$sty-doc">
      Entries from keys: <xsl:value-of select="count(key('name', 'ENTRY'))"/>
      Template from keys: <xsl:value-of select="count(key('name', 'xsl:template'))"/>
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>
"""


SHEET_3 = """\
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:x="http://spam.com"
>

  <xsl:output method="text"/>

  <xsl:key name='k1' match='xsl:*' use='name()'/>
  <xsl:key name='k2' match='x:*' use='@id'/>

  <x:grail id="ein"/>
  <x:grail id="zwo"/>
  <x:knicht id="drei"/>
  <x:knicht id="vier"/>

  <xsl:template match="/">
    <xsl:for-each select="document('')">
    Entries from key 1: <xsl:copy-of select="count(key('k1', 'xsl:template'))"/>
    Entries from key 2: <xsl:copy-of select="count(key('k2', 'drei'))"/>
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>
"""


SHEET_3a = """\
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:x="http://spam.com"
>

  <xsl:import href="Xml/Xslt/Core/etc/test-key-import-error.xslt"/>

  <x:grail id="ein"/>
  <x:grail id="zwo"/>
  <x:knicht id="drei"/>
  <x:knicht id="vier"/>

  <xsl:template match="/">
    Entries from key 1: <xsl:value-of select="count(key('k1', 'pa'))"/>
    <xsl:for-each select="document('')">
    Entries from key 2: <xsl:copy-of select="count(key('k2', 'drei'))"/>
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>
"""


SHEET_4 = """\
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>

  <xsl:import href="Xml/Xslt/Core/etc/test-key-import-1.xslt"/>
  <xsl:output method="text"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="/">
    Entries from key 1: <xsl:value-of select="count(key('k1', 'pa'))"/>
    <xsl:for-each select="$sty-doc">
    Entries from key 2: <xsl:copy-of select="count(key('k2', 'drei'))"/>
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>
"""


SHEET_5 = """\
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>

  <xsl:include href="Xml/Xslt/Core/etc/test-key-import-1.xslt"/>
  <xsl:output method="text"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="/">
    Entries from key 1: <xsl:value-of select="count(key('k1', 'pa'))"/>
    <xsl:for-each select="$sty-doc">
    Entries from key 2: <xsl:copy-of select="count(key('k2', 'drei'))"/>
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>
"""


SHEET_6 = """\
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>

  <xsl:import href="Xml/Xslt/Core/etc/test-key-import-1.xslt"/>
  <!-- creates a silly key which indexes all ENTRY elements in the doc as 'pa'
       just to be different from the key in the import with the same name -->
  <xsl:key name='k1' match='ENTRY' use="'pa'"/>

  <xsl:output method="text"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="/">
    Entries from key 1: <xsl:value-of select="count(key('k1', 'pa'))"/>
    <xsl:for-each select="$sty-doc">
    Entries from key 2: <xsl:copy-of select="count(key('k2', 'drei'))"/>
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>
"""


SHEET_7 = """\
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:x="http://spam.com/x"
>

  <xsl:output method="xml"/>
  <xsl:strip-space elements="*"/>
  <xsl:variable name="sty-doc" select="document('')"/>

  <xsl:key name='k1' match='x:*' use='local-name()'/>
  <xsl:key name='k1' match='x:*' use='@id'/>

  <x:vier id="ein"/>
  <x:drei id="zwo"/>
  <x:zwo id="drei"/>
  <x:ein id="vier"/>

  <xsl:template match="/">
    <result>
      <xsl:for-each select="$sty-doc">
        <xsl:copy-of select="key('k1', 'drei')"/>
      </xsl:for-each>
    </result>
  </xsl:template>

</xsl:stylesheet>
"""

SRC_7 = """<?xml version="1.0" encoding="utf-8"?><dummy/>"""


SHEET_8 = """\
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:x="http://spam.com/x"
  xmlns:y="http://spam.com/y"
>

  <xsl:output method="xml"/>
  <xsl:strip-space elements="*"/>
  <xsl:variable name="sty-doc" select="document('')"/>

  <xsl:key name='k1' match='x:*' use='@id'/>
  <xsl:key name='k1' match='y:*' use='@id'/>

  <x:vier id="ein"/>
  <x:drei id="zwo"/>
  <x:zwo id="drei"/>
  <x:ein id="vier"/>
  <y:vier id="ein"/>
  <y:drei id="zwo"/>
  <y:zwo id="drei"/>
  <y:ein id="vier"/>

  <xsl:template match="/">
    <result>
      <xsl:for-each select="$sty-doc">
        <xsl:copy-of select="key('k1', 'drei')"/>
      </xsl:for-each>
    </result>
  </xsl:template>

</xsl:stylesheet>
"""


SHEET_9 = """\
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:x="http://spam.com/x"
  xmlns:y="http://spam.com/y"
>

  <xsl:import href="Xml/Xslt/Core/etc/test-key-import-2.xslt"/>
  <xsl:output method="xml"/>
  <xsl:strip-space elements="*"/>
  <xsl:variable name="sty-doc" select="document('')"/>

  <xsl:key name='k1' match='x:*' use='@id'/>

  <x:vier id="ein"/>
  <x:drei id="zwo"/>
  <x:zwo id="drei"/>
  <x:ein id="vier"/>
  <y:vier id="ein"/>
  <y:drei id="zwo"/>
  <y:zwo id="drei"/>
  <y:ein id="vier"/>

  <xsl:template match="/">
    <result>
      <xsl:for-each select="$sty-doc">
        <xsl:copy-of select="key('k1', 'drei')"/>
      </xsl:for-each>
    </result>
  </xsl:template>

</xsl:stylesheet>
"""



EXPECTED_1 = """<HTML>
  <HEAD>
    <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
    <TITLE>Address Book</TITLE>
  </HEAD>
  <BODY>
    <H1>Tabulate just the Names</H1>
    <TABLE>
      <TR>
        <TD ALIGN='CENTER'><B ID='pieter.aaron@inter.net'>Pieter Aaron</B></TD>
      </TR>
      <TR>
        <TD ALIGN='CENTER'><B ID='endubuisi@spamtron.com'>Emeka Ndubuisi</B></TD>
      </TR>
      <TR>
        <TD ALIGN='CENTER'><B ID='vxz@magog.ru'>Vasia Zhugenev</B></TD>
      </TR>
    </TABLE>
  </BODY>
</HTML>"""


EXPECTED_2 = """\
<?xml version="1.0" encoding="UTF-8"?>

      Entries from keys: 3
      Template from keys: 0
      Entries from keys: 0
      Template from keys: 1"""


EXPECTED_3 = """
    Entries from key 1: 1
    Entries from key 2: 1"""


EXPECTED_6 = """
    Entries from key 1: 3
    Entries from key 2: 1"""


EXPECTED_7 = """<?xml version="1.0" encoding="UTF-8"?>
<result xmlns:x="http://spam.com/x"><x:drei xmlns:xsl="http://www.w3.org/1999/XSL/Transform" id="zwo"/><x:zwo xmlns:xsl="http://www.w3.org/1999/XSL/Transform" id="drei"/></result>"""


EXPECTED_8 = """<?xml version="1.0" encoding="UTF-8"?>
<result xmlns:x="http://spam.com/x" xmlns:y="http://spam.com/y"><x:zwo xmlns:xsl="http://www.w3.org/1999/XSL/Transform" id="drei"/><y:zwo xmlns:xsl="http://www.w3.org/1999/XSL/Transform" id="drei"/></result>"""

EXPECTED_9 = EXPECTED_8

SHEET_URI = BASE + 'sheet_string'


def Test(tester):
    source = test_harness.FileInfo(uri="Xml/Xslt/Core/addr_book1.xml")
    sty = test_harness.FileInfo(uri="Xml/Xslt/Core/addr_book_keyed.xsl")
    test_harness.XsltTest(tester, source, [sty], EXPECTED_1,
                          title="Basic keys test")

    sty = test_harness.FileInfo(string=SHEET_2)
    test_harness.XsltTest(tester, source, [sty], EXPECTED_2,
                          title="Keys shifting with context doc")

    sty = test_harness.FileInfo(string=SHEET_3)
    test_harness.XsltTest(tester, source, [sty], EXPECTED_3,
                          title="Keys using patterns of form ns:*")

    sty = test_harness.FileInfo(string=SHEET_3a)
    test_harness.XsltTest(tester, source, [sty], None,
                          exceptionClass=RuntimeException,
                          exceptionCode=RuntimeException.UNDEFINED_PREFIX,
                          title="Keys using patterns of form ns:*")

    sheet = test_harness.FileInfo(string=SHEET_4, baseUri=SHEET_URI)
    test_harness.XsltTest(tester, source, [sheet], EXPECTED_3,
                          title='Imported keys')

    sheet = test_harness.FileInfo(string=SHEET_5, baseUri=SHEET_URI)
    test_harness.XsltTest(tester, source, [sheet], EXPECTED_3,
                          title='Included keys')

    tester.startGroup("Keys with same name")

    source = test_harness.FileInfo(string=SRC_7)
    sheet = test_harness.FileInfo(string=SHEET_7, baseUri=SHEET_URI)
    test_harness.XsltTest(tester, source, [sheet], EXPECTED_7,
                          title='Different values')

    source = test_harness.FileInfo(string=SRC_7)
    sheet = test_harness.FileInfo(string=SHEET_8, baseUri=SHEET_URI)
    test_harness.XsltTest(tester, source, [sheet], EXPECTED_8,
                          title='Matching different nodes')

    tester.startGroup("Keys with different import precedence")

    source = test_harness.FileInfo(uri="Xml/Xslt/Core/addr_book1.xml")
    sheet = test_harness.FileInfo(string=SHEET_6, baseUri=SHEET_URI)
    test_harness.XsltTest(tester, source, [sheet], EXPECTED_6,
                          title='Different values')

    source = test_harness.FileInfo(string=SRC_7)
    sheet = test_harness.FileInfo(string=SHEET_9, baseUri=SHEET_URI)
    test_harness.XsltTest(tester, source, [sheet], EXPECTED_9,
                          title='Matching different nodes')

    tester.groupDone()
    tester.groupDone()

    return
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.