Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?xml version="1.0" encoding="UTF-8" ?>
- <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xs="http://www.w3.org/2001/XMLSchema"
- exclude-result-prefixes="xs">
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
- <xsl:template name="converter" match="xhtml:body">
- <xsl:param name="currentProp"/>
- <xsl:param name="needSearch"/>
- <xsl:variable name="root" select="xhtml:div"/>
- <xsl:variable name="entity"
- select="$root[tokenize(@class,';')[
- matches(.,'\p{Z}*entity\p{Z}*')
- ]]"/>
- <xsl:variable name="attribute"
- select="$root[tokenize(@class,';')[
- matches(.,'\p{Z}*attribute\p{Z}*')
- ]]"/>
- <xsl:variable name="relWithEntity"
- select="xhtml:svg[tokenize(@class,';')[
- matches(.,'\p{Z}*_jsPlumb_connector\p{Z}*')
- ]]"/>
- <xsl:if test="$currentProp and number($needSearch) > 0 ">
- <xsl:value-of select="$currentProp"/>
- <xsl:for-each-group select="$relWithEntity" group-by="@class">
- <xsl:element name="property">
- <xsl:attribute name="name">
- <xsl:value-of select="$currentProp"/>
- </xsl:attribute>
- </xsl:element>
- </xsl:for-each-group>
- </xsl:if>
- <xsl:if test="$needSearch != '1'">
- <xsl:for-each-group select="$relWithEntity" group-by="@class">
- <xsl:variable name="currentElement" select="tokenize(current-grouping-key(), '\s')"/>
- <xsl:if test="contains($currentElement[3],'ent')">
- <xsl:value-of select="$currentElement[3]"/>
- <xsl:text>
- </xsl:text>
- <xsl:element name="entity">
- <xsl:attribute name="id">
- <xsl:value-of select="$currentElement[3]"/>
- </xsl:attribute>
- <xsl:if test="contains($currentElement[2],'prop')">
- <xsl:for-each-group select="$relWithEntity" group-by="@class">
- <xsl:variable name="relClass"
- select="tokenize(current-grouping-key(), '\s')"/>
- <xsl:if
- test="($relClass[3] = $currentElement[3]) and contains($relClass[2], 'prop')">
- <xsl:element name="property">
- <xsl:attribute name="name">
- <xsl:value-of select="$relClass[2]"/>
- </xsl:attribute>
- <xsl:for-each-group select="$relWithEntity" group-by="@class">
- <xsl:variable name="relClass2"
- select="tokenize(current-grouping-key(), '\s')"/>
- <xsl:if
- test="$relClass2[3] = $relClass[2] and contains($relClass2[2],'prop') ">
- <xsl:element name="property">
- <xsl:attribute name="name">
- <xsl:value-of select="$relClass2[2]"/>
- </xsl:attribute>
- <xsl:call-template name="converter">
- <xsl:with-param name="needSearch" select="'1'" />
- <xsl:with-param name="currentProp" select="$relClass2[2]"/>
- </xsl:call-template>
- </xsl:element>
- </xsl:if>
- </xsl:for-each-group>
- </xsl:element>
- </xsl:if>
- </xsl:for-each-group>
- </xsl:if>
- </xsl:element>
- </xsl:if>
- <xsl:if
- test="contains($currentElement[2],'prop') and contains($currentElement[3],'prop')">
- <xsl:value-of select="$currentProp"/>
- </xsl:if>
- </xsl:for-each-group>
- </xsl:if>
- </xsl:template>
- </xsl:stylesheet>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement