Viewing file: jt_20000808.py (1.45 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#Jeni Tennison <jeni.tennison@epistemics.co.uk>'s implementation of Oliver Becker's arbitrary sort/XPath conditionals trick. Aug 8 2000.
from Xml.Xslt import test_harness
sheet_1 = """<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version="1.0">
<xsl:output method="text"/>
<xsl:template match="items"> <xsl:for-each select="item"> <xsl:sort select="concat( substring(concat('Mac', substring-after(., 'Re Mc'), ', Re'), 1 div starts-with(., 'Re Mc')), substring(concat(substring-after(., 'Re '), ', Re'), 1 div (starts-with(., 'Re ') and not(starts-with(., 'Re Mc')))), substring(concat('Mac', substring-after(., 'Mc')), 1 div (not(starts-with(., 'Re ')) and starts-with(., 'Mc'))), substring(., 1 div not(starts-with(.,'Mc') or starts-with(., 'Re '))))" /> <xsl:copy-of select="." /> </xsl:for-each> </xsl:template>
</xsl:stylesheet>"""
source_1 = """<items> <item>MacBean</item> <item>McBarlow</item> <item>Re MacBart</item> <item>Re McBeanie</item> </items>"""
expected_1 = """McBarlowRe MacBartMacBeanRe McBeanie"""
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) return
|