@@ -44,4 +44,90 @@ describe('xsl:choose', () => {
44
44
const html = await xsltClass . xsltProcess ( xml , xslt ) ;
45
45
assert . equal ( html , '<products><product>No</product><product>Yes</product></products>' ) ;
46
46
} ) ;
47
+
48
+ it ( 'https://github.com/DesignLiquido/xslt-processor/issues/92' , async ( ) => {
49
+ const xmlSource = `<sign gloss="simple">
50
+ <hamnosys_sign>
51
+ <sign2>
52
+ <minitialconfig2>
53
+ <handconfig2>
54
+ <handshape2>
55
+ <handshape1 handshapeclass="ham_flathand"/>
56
+ </handshape2>
57
+ </handconfig2>
58
+ </minitialconfig2>
59
+ </sign2>
60
+ </hamnosys_sign>
61
+ </sign>` ;
62
+
63
+ const xsltSource = `<xsl:transform version="1.0"
64
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
65
+
66
+ <!-- THESE OUTPUT SETTINGS MAY BE OVERRIDDEN BY THE H2S PROCESSOR: -->
67
+
68
+ <xsl:output method="xml" omit-xml-declaration="yes"
69
+ indent="yes" encoding="UTF-8"/>
70
+
71
+ <!--######## handShapeValue ########-->
72
+
73
+ <xsl:template name="handShapeValue">
74
+
75
+ <xsl:variable name="hs" select="@handshapeclass"/>
76
+ <xsl:value-of select="substring-after(concat(substring-before($hs,'hand'),$hs[not(contains(.,'hand'))]),'ham_')"/>
77
+
78
+ <xsl:if test="$hs='ham_flathand'">
79
+ <xsl:value-of select="'flat'"/>
80
+ </xsl:if>
81
+ <xsl:if test="$hs!='ham_flathand'">
82
+ <xsl:value-of select="substring-after($hs,'ham_')"/>
83
+ </xsl:if>
84
+
85
+ <xsl:choose>
86
+ <xsl:when test="$hs='ham_flathand'">
87
+ <xsl:value-of select="'flat'"/>
88
+ </xsl:when>
89
+ <xsl:otherwise>
90
+ <xsl:value-of select="substring-after($hs,'ham_')"/>
91
+ </xsl:otherwise>
92
+ </xsl:choose>
93
+
94
+ <xsl:choose>
95
+ <xsl:when test="$hs='ham_flathand'">
96
+ <xsl:value-of select="'flat'"/>
97
+ </xsl:when>
98
+ </xsl:choose>
99
+
100
+ </xsl:template>
101
+
102
+ <!--######## sign ########-->
103
+
104
+ <xsl:template match="/">
105
+ <!--
106
+ <!ELEMENT sign (hamnosys_sign?)>
107
+ <!ATTLIST sign gloss CDATA #IMPLIED>
108
+ -->
109
+
110
+ <xsl:element name="hamgestural_sign">
111
+
112
+ <xsl:if test="@gloss">
113
+ <xsl:attribute name="gloss">
114
+ <xsl:value-of select="@gloss"/>
115
+ </xsl:attribute>
116
+ </xsl:if>
117
+
118
+ <xsl:element name="sign_manual">
119
+ <xsl:apply-templates select="sign/hamnosys_sign/sign2/minitialconfig2/handconfig2/handshape2/handshape1"/>
120
+ </xsl:element>
121
+
122
+ </xsl:element>
123
+ </xsl:template>
124
+ </xsl:transform>` ;
125
+
126
+ const xsltClass = new Xslt ( ) ;
127
+ const xmlParser = new XmlParser ( ) ;
128
+ const xml = xmlParser . xmlParse ( xmlSource ) ;
129
+ const xslt = xmlParser . xmlParse ( xsltSource ) ;
130
+ const html = await xsltClass . xsltProcess ( xml , xslt ) ;
131
+ assert . equal ( html , '<hamgestural_sign><sign_manual/></hamgestural_sign>' ) ;
132
+ } ) ;
47
133
} ) ;
0 commit comments