<xsl:stylesheet \r
version="1.0"\r
+\r
xmlns:html="http://www.w3.org/1999/xhtml"\r
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform">\r
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\r
+ xmlns:dc="http://purl.org/dc/elements/1.1/"\r
+>\r
\r
- <xsl:output method="xml" encoding="utf-8" omit-xml-declaration = "yes" />\r
+ <xsl:output method="xml" encoding="utf-8" indent="no" omit-xml-declaration="yes" />\r
<!--\r
Ten dokument definiuję przekształcenie odwrotne do wl2html\r
- --> \r
+ -->\r
+\r
+ <xsl:template match="comment()"><xsl:copy /></xsl:template>\r
+\r
+ <!-- libxslt has fuck-ed prorities -->\r
+ <!-- <xsl:template match="@*[not(starts-with(name(), 'x-')) and name() != 'class']">\r
+ <xsl:message>Boom!: <xsl:value-of select="name()" /></xsl:message>\r
+ </xsl:template> -->\r
+\r
+ <xsl:template match="@*" priority="0" />\r
\r
<!-- Specjalne reguły dla przypisów -->\r
- <xsl:template match="*[@x-annotation-box]|*[@X-ANNOTATION-BOX]">\r
+ <xsl:template match="*[@x-annotation-box]|*[@class='theme-text-list']">\r
<xsl:apply-templates select="node()" />\r
</xsl:template>\r
- \r
+\r
<xsl:template match="*[@x-node]">\r
- <xsl:element name="{@x-node}"> \r
- <xsl:apply-templates select="@*|node()" />\r
+ <xsl:element name="{@x-node}" namespace="{@x-ns}">\r
+ <xsl:apply-templates select="@*" />\r
+ <xsl:apply-templates select="node()" />\r
</xsl:element>\r
- </xsl:template>\r
+ </xsl:template> \r
+ \r
+ <xsl:template match="*[@x-node = 'out-of-flow-text']">\r
+ <xsl:apply-templates select="child::node()" />\r
+ </xsl:template>\r
\r
- <xsl:template match="*[@X-NODE]">\r
- <xsl:element name="{@X-NODE}">\r
- <xsl:apply-templates select="@*|node()" />\r
- </xsl:element>\r
- </xsl:template>\r
+ <xsl:template match="*[@x-node = 'out-of-flow-text']/text()"><xsl:value-of select="." /></xsl:template>\r
\r
<!-- Specjalne reguły dla wersów -->\r
- <xsl:template match="*[@x-node = 'wers' or @X-NODE = 'wers']">\r
+ <xsl:template match="*[@x-node = 'wers']">\r
<xsl:apply-templates select="node()" />\r
- <xsl:if test="position() != last()"><xsl:text>/
</xsl:text></xsl:if>\r
+ <xsl:if test="count(following-sibling::*[starts-with(@x-node, 'wers')]) > 0"><xsl:text>/
</xsl:text></xsl:if>\r
</xsl:template>\r
\r
<xsl:template match="*[starts-with(@x-node, 'wers_')]">\r
- <xsl:element name="{@x-node}"> \r
- <xsl:apply-templates select="@*|node()" />\r
- </xsl:element>\r
- <xsl:if test="position() != last()"><xsl:text>/
</xsl:text></xsl:if>\r
+ <xsl:element name="{@x-node}" namespace="{@x-ns}"><xsl:apply-templates select="@*|node()" /></xsl:element>\r
+ <xsl:if test="count(following-sibling::*[starts-with(@x-node, 'wers')]) > 0"><xsl:text>/
</xsl:text></xsl:if>\r
+ </xsl:template>\r
+ \r
+ <xsl:template match="@*[starts-with(name(), 'x-attr-qname-')]">\r
+ <xsl:variable name="attr-id" select="substring-after(name(), 'x-attr-qname-')" />\r
+ <xsl:attribute name="{.}" namespace="{parent::*/@*[name() = concat('x-attr-ns-', $attr-id)]}">\r
+ <xsl:value-of select="parent::*/@*[name() = concat('x-attr-value-', $attr-id)]" />\r
+ </xsl:attribute>\r
</xsl:template>\r
\r
- <xsl:template match="*[starts-with(@X-NODE, 'wers_')]">\r
- <xsl:element name="{@X-NODE}">\r
- <xsl:apply-templates select="@*|node()" />\r
- </xsl:element>\r
- <xsl:if test="position() != last()"><xsl:text>/
</xsl:text></xsl:if>\r
+ <!-- upper case duplicates for the brain-dead Firefox -->\r
+\r
+ <xsl:template match="@*[starts-with(name(), 'X-ATTR-QNAME-')]">\r
+ <xsl:variable name="attr-id" select="substring-after(name(), 'X-ATTR-QNAME-')" />\r
+ <xsl:attribute name="{.}" namespace="{parent::*/@*[name() = concat('X-ATTR-NS-', $attr-id)]}">\r
+ <xsl:value-of select="parent::*/@*[name() = concat('X-ATTR-VALUE-', $attr-id)]" />\r
+ </xsl:attribute>\r
</xsl:template>\r
\r
- <!-- Użycie zmiennych jako argumenty dla translate, psuję Chrome/Safari :( -->\r
- <xsl:template match="@*[starts-with(translate(name(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'x-attrib-')]">\r
- <xsl:attribute name="{substring-after(translate(name(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'x-attrib-')}"><xsl:value-of select="." /></xsl:attribute>\r
+ <xsl:template match="*[@X-ANNOTATION-BOX]">\r
+ <xsl:apply-templates select="node()" />\r
</xsl:template>\r
\r
- <xsl:template match="@*" /><!--[A:<xsl:value-of select="name()" />]</xsl:template> -->\r
+ <xsl:template match="*[@X-NODE]">\r
+ <xsl:element name="{@X-NODE}" namespace="{@X-NS}">\r
+ <xsl:apply-templates select="@*" />\r
+ <xsl:apply-templates select="node()" />\r
+ </xsl:element>\r
+ </xsl:template> \r
+ \r
+ <xsl:template match="*[@X-NODE = 'out-of-flow-text']" priority="1">\r
+ <xsl:apply-templates select="child::node()" />\r
+ </xsl:template>\r
\r
+ <xsl:template match="*[@X-NODE = 'out-of-flow-text']/text()"><xsl:value-of select="." /></xsl:template>\r
+\r
+ <!-- Specjalne reguły dla wersów -->\r
+ <xsl:template match="*[@X-NODE = 'wers']">\r
+ <xsl:apply-templates select="node()" />\r
+ <xsl:if test="count(following-sibling::*[starts-with(@X-NODE, 'wers')]) > 0"><xsl:text>/
</xsl:text></xsl:if>\r
+ </xsl:template>\r
+\r
+ <xsl:template match="*[starts-with(@X-NODE, 'wers_')]">\r
+ <xsl:element name="{@X-NODE}" namespace="{@X-NS}"><xsl:apply-templates select="@*|node()" /></xsl:element>\r
+ <xsl:if test="count(following-sibling::*[starts-with(@X-NODE, 'wers')]) > 0"><xsl:text>/
</xsl:text></xsl:if>\r
+ </xsl:template>\r
+ \r
<xsl:template match="*" />\r
+ \r
+ \r
</xsl:stylesheet>
\ No newline at end of file