Mode:

Compact lists

Showing:

Documentation
Parameters
Used by
References
Included from
Source
Stylesheet xml-to-string.xsl
Documentation

Description

Copyright (c) 2001-2004, Evan Lenz 
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
    * Neither the name of XMLPortfolio.com nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

	    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Copyright © 2009, 2010 John A. Walsh on modifications to original code, specifically TEI-specific code and addition of <span> tags for CSS styling. 
Included from
Stylesheet version 2.0
Template xml-to-string
Namespace No namespace
Used by
Parameters
QName Namespace Select
node-set No namespace .
Import precedence 0
Source
<xsl:template name="xml-to-string">
  <xsl:param name="node-set" select="."/>
  <xsl:apply-templates select="$node-set" mode="xml-to-string">
    <xsl:with-param name="depth" select="1"/>
  </xsl:apply-templates>
</xsl:template>
Template /xml-to-string-root-rule
Namespace No namespace
Match /
Mode #default
References
Template
Import precedence 0
Priority 0
Source
<xsl:template match="/" name="xml-to-string-root-rule" priority="0">
  <xsl:call-template name="xml-to-string"/>
</xsl:template>
Template /xml-to-string
Namespace No namespace
Match /
Mode xml-to-string
Parameters
QName Namespace
depth No namespace
Import precedence 0
Priority 0
Source
<xsl:template match="/" mode="xml-to-string" priority="0">
  <xsl:param name="depth"/>
  <xsl:apply-templates mode="xml-to-string">
    <xsl:with-param name="depth" select="$depth"/>
  </xsl:apply-templates>
</xsl:template>
Template *xml-to-string
Namespace No namespace
Match *
Mode xml-to-string
References
Parameters
QName Namespace
depth No namespace
Import precedence 0
Source
<xsl:template match="*" mode="xml-to-string">
  <xsl:param name="depth"/>
  <xsl:variable name="element" select="."/>
  <span class="eg-element">
    <xsl:value-of select="$start-tag-start"/>
    <xsl:call-template name="element-name">
      <xsl:with-param name="text" select="name()"/>
    </xsl:call-template>
  </span>
  <xsl:apply-templates select="@*" mode="xml-to-string"/>
  <!-- Don't want xmlns="http://www.tei-c.org/ns/Examples" in examples -->
  <xsl:for-each select="namespace::*[. != 'http://www.tei-c.org/ns/Examples']">
    <xsl:call-template name="process-namespace-node">
      <xsl:with-param name="element" select="$element"/>
      <xsl:with-param name="depth" select="$depth"/>
    </xsl:call-template>
  </xsl:for-each>
  <span class="eg-element">
    <xsl:choose>
      <xsl:when test="node() or not($use-empty-syntax)">
        <xsl:value-of select="$start-tag-end"/>
        <xsl:apply-templates mode="xml-to-string">
          <xsl:with-param name="depth" select="$depth + 1"/>
        </xsl:apply-templates>
        <xsl:value-of select="$end-tag-start"/>
        <xsl:call-template name="element-name">
          <xsl:with-param name="text" select="name()"/>
        </xsl:call-template>
        <xsl:value-of select="$end-tag-end"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$empty-tag-end"/>
      </xsl:otherwise>
    </xsl:choose>
  </span>
</xsl:template>
Template process-namespace-node
Namespace No namespace
Used by
Template
References
Parameters
QName Namespace
depth No namespace
element No namespace
Import precedence 0
Source
<xsl:template name="process-namespace-node">
  <xsl:param name="element"/>
  <xsl:param name="depth"/>
  <xsl:variable name="declaredAbove">
    <xsl:call-template name="isDeclaredAbove">
      <xsl:with-param name="depth" select="$depth - 1"/>
      <xsl:with-param name="element" select="$element/.."/>
    </xsl:call-template>
  </xsl:variable>
  <xsl:if test="(not($exclude-unused-prefixes) or ($element | $element//@* | $element//*)[namespace-uri()=current()]) and not(string($declaredAbove)) and name()!='xml'">
    <xsl:value-of select="$space"/>
    <span class="eg-nsdecl">
      <xsl:value-of select="$ns-decl"/>
      <xsl:if test="name()">
        <xsl:value-of select="$colon"/>
        <xsl:call-template name="ns-prefix">
          <xsl:with-param name="text" select="name()"/>
        </xsl:call-template>
      </xsl:if>
      <xsl:value-of select="$equals"/>
    </span>
    <span class="eg-ns">
      <xsl:value-of select="$attribute-delimiter"/>
      <xsl:call-template name="ns-uri">
        <xsl:with-param name="text" select="string(.)"/>
      </xsl:call-template>
      <xsl:value-of select="$attribute-delimiter"/>
    </span>
  </xsl:if>
</xsl:template>
Template isDeclaredAbove
Namespace No namespace
Used by
References
Template
Parameters
QName Namespace
depth No namespace
element No namespace
Import precedence 0
Source
<xsl:template name="isDeclaredAbove">
  <xsl:param name="element"/>
  <xsl:param name="depth"/>
  <xsl:if test="$depth > 0">
    <xsl:choose>
      <xsl:when test="$element/namespace::*[name(.)=name(current()) and .=current()]">1</xsl:when>
      <xsl:when test="$element/namespace::*[name(.)=name(current())]"/>
      <xsl:otherwise>
        <xsl:call-template name="isDeclaredAbove">
          <xsl:with-param name="depth" select="$depth - 1"/>
          <xsl:with-param name="element" select="$element/.."/>
        </xsl:call-template>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:if>
</xsl:template>
Template @*xml-to-string
Namespace No namespace
Match @*
Mode xml-to-string
References
Import precedence 0
Source
<xsl:template match="@*" mode="xml-to-string">
  <xsl:value-of select="$space"/>
  <span class="eg-att">
    <xsl:call-template name="attribute-name">
      <xsl:with-param name="text" select="name()"/>
    </xsl:call-template>
    <xsl:value-of select="$equals"/>
  </span>
  <span class="eg-attvalue">
    <xsl:value-of select="$attribute-delimiter"/>
    <xsl:call-template name="attribute-value">
      <xsl:with-param name="text" select="string(.)"/>
    </xsl:call-template>
    <xsl:value-of select="$attribute-delimiter"/>
  </span>
</xsl:template>
Template comment()xml-to-string
Namespace No namespace
Match comment()
Mode xml-to-string
References
Parameters
Template
Import precedence 0
Source
<xsl:template match="comment()" mode="xml-to-string">
  <span class="eg-comment">
    <xsl:value-of select="$comment-start"/>
    <xsl:call-template name="comment-text">
      <xsl:with-param name="text" select="string(.)"/>
    </xsl:call-template>
    <xsl:value-of select="$comment-end"/>
  </span>
</xsl:template>
Template processing-instruction()xml-to-string
Namespace No namespace
Match processing-instruction()
Mode xml-to-string
References
Parameters
Templates
Import precedence 0
Source
<xsl:template match="processing-instruction()" mode="xml-to-string">
  <xsl:value-of select="$pi-start"/>
  <xsl:call-template name="pi-target">
    <xsl:with-param name="text" select="name()"/>
  </xsl:call-template>
  <xsl:value-of select="$space"/>
  <xsl:call-template name="pi-text">
    <xsl:with-param name="text" select="string(.)"/>
  </xsl:call-template>
  <xsl:value-of select="$pi-end"/>
</xsl:template>
Template text()xml-to-string
Namespace No namespace
Match text()
Mode xml-to-string
References
Template
Import precedence 0
Source
<xsl:template match="text()" mode="xml-to-string">
  <span class="eg-text">
    <xsl:call-template name="text-content">
      <xsl:with-param name="text" select="string(.)"/>
    </xsl:call-template>
  </span>
</xsl:template>
Template element-name
Namespace No namespace
Used by
Template
Parameters
QName Namespace
text No namespace
Import precedence 0
Source
<xsl:template name="element-name">
  <xsl:param name="text"/>
  <xsl:value-of select="$text"/>
</xsl:template>
Template attribute-name
Namespace No namespace
Used by
Template
Parameters
QName Namespace
text No namespace
Import precedence 0
Source
<xsl:template name="attribute-name">
  <xsl:param name="text"/>
  <xsl:value-of select="$text"/>
</xsl:template>
Template attribute-value
Namespace No namespace
Used by
Templates
References
Parameters
QName Namespace
text No namespace
Import precedence 0
Source
<xsl:template name="attribute-value">
  <xsl:param name="text"/>
  <xsl:variable name="escaped-markup">
    <xsl:call-template name="escape-markup-characters">
      <xsl:with-param name="text" select="$text"/>
    </xsl:call-template>
  </xsl:variable>
  <xsl:choose>
    <xsl:when test="$attribute-delimiter = "'"">
      <xsl:call-template name="replace-string">
        <xsl:with-param name="text" select="$escaped-markup"/>
        <xsl:with-param name="replace" select=""'""/>
        <xsl:with-param name="with" select="'&apos;'"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:when test="$attribute-delimiter = '"'">
      <xsl:call-template name="replace-string">
        <xsl:with-param name="text" select="$escaped-markup"/>
        <xsl:with-param name="replace" select="'"'"/>
        <xsl:with-param name="with" select="'&quot;'"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:call-template name="replace-string">
        <xsl:with-param name="text" select="$escaped-markup"/>
        <xsl:with-param name="replace" select="$attribute-delimiter"/>
        <xsl:with-param name="with" select="''"/>
      </xsl:call-template>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>
Template ns-prefix
Namespace No namespace
Used by
Parameters
QName Namespace
text No namespace
Import precedence 0
Source
<xsl:template name="ns-prefix">
  <xsl:param name="text"/>
  <xsl:value-of select="$text"/>
</xsl:template>
Template ns-uri
Namespace No namespace
Used by
References
Template
Parameters
QName Namespace
text No namespace
Import precedence 0
Source
<xsl:template name="ns-uri">
  <xsl:param name="text"/>
  <xsl:call-template name="attribute-value">
    <xsl:with-param name="text" select="$text"/>
  </xsl:call-template>
</xsl:template>
Template text-content
Namespace No namespace
Used by
References
Parameters
QName Namespace
text No namespace
Import precedence 0
Source
<xsl:template name="text-content">
  <xsl:param name="text"/>
  <xsl:call-template name="escape-markup-characters">
    <xsl:with-param name="text" select="$text"/>
  </xsl:call-template>
</xsl:template>
Template pi-target
Namespace No namespace
Used by
Parameters
QName Namespace
text No namespace
Import precedence 0
Source
<xsl:template name="pi-target">
  <xsl:param name="text"/>
  <xsl:value-of select="$text"/>
</xsl:template>
Template pi-text
Namespace No namespace
Used by
Parameters
QName Namespace
text No namespace
Import precedence 0
Source
<xsl:template name="pi-text">
  <xsl:param name="text"/>
  <xsl:value-of select="$text"/>
</xsl:template>
Template comment-text
Namespace No namespace
Used by
Parameters
QName Namespace
text No namespace
Import precedence 0
Source
<xsl:template name="comment-text">
  <xsl:param name="text"/>
  <xsl:value-of select="$text"/>
</xsl:template>
Template escape-markup-characters
Namespace No namespace
Used by
References
Template
Parameters
QName Namespace
text No namespace
Import precedence 0
Source
<xsl:template name="escape-markup-characters">
  <xsl:param name="text"/>
  <xsl:variable name="ampEscaped">
    <xsl:call-template name="replace-string">
      <xsl:with-param name="text" select="$text"/>
      <xsl:with-param name="replace" select="'&'"/>
      <xsl:with-param name="with" select="'&amp;'"/>
    </xsl:call-template>
  </xsl:variable>
  <xsl:variable name="ltEscaped">
    <xsl:call-template name="replace-string">
      <xsl:with-param name="text" select="$ampEscaped"/>
      <xsl:with-param name="replace" select="'<'"/>
      <xsl:with-param name="with" select="'&lt;'"/>
    </xsl:call-template>
  </xsl:variable>
  <xsl:call-template name="replace-string">
    <xsl:with-param name="text" select="$ltEscaped"/>
    <xsl:with-param name="replace" select="']]>'"/>
    <xsl:with-param name="with" select="']]&gt;'"/>
  </xsl:call-template>
</xsl:template>
Template replace-string
Namespace No namespace
Used by
References
Template
Parameters
QName Namespace
replace No namespace
text No namespace
with No namespace
Import precedence 0
Source
<xsl:template name="replace-string">
  <xsl:param name="text"/>
  <xsl:param name="replace"/>
  <xsl:param name="with"/>
  <xsl:variable name="stringText" select="string($text)"/>
  <xsl:choose>
    <xsl:when test="contains($stringText,$replace)">
      <xsl:value-of select="substring-before($stringText,$replace)"/>
      <xsl:value-of select="$with"/>
      <xsl:call-template name="replace-string">
        <xsl:with-param name="text" select="substring-after($stringText,$replace)"/>
        <xsl:with-param name="replace" select="$replace"/>
        <xsl:with-param name="with" select="$with"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="$stringText"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>
Parameter use-empty-syntax
Namespace No namespace
Select true()
Used by
Template
Source
<xsl:param name="use-empty-syntax" select="true()"/>
Parameter exclude-unused-prefixes
Namespace No namespace
Select false()
Used by
Source
<xsl:param name="exclude-unused-prefixes" select="false()"/>
Parameter start-tag-start
Namespace No namespace
Select '<'
Used by
Template
Source
<xsl:param name="start-tag-start" select="'<'"/>
Parameter start-tag-end
Namespace No namespace
Select '>'
Used by
Template
Source
<xsl:param name="start-tag-end" select="'>'"/>
Parameter empty-tag-end
Namespace No namespace
Select '/>'
Used by
Template
Source
<xsl:param name="empty-tag-end" select="'/>'"/>
Parameter end-tag-start
Namespace No namespace
Select '</'
Used by
Template
Source
<xsl:param name="end-tag-start" select="'</'"/>
Parameter end-tag-end
Namespace No namespace
Select '>'
Used by
Template
Source
<xsl:param name="end-tag-end" select="'>'"/>
Parameter space
Namespace No namespace
Select ' '
Used by
Source
<xsl:param name="space" select="' '"/>
Parameter ns-decl
Namespace No namespace
Select 'xmlns'
Used by
Source
<xsl:param name="ns-decl" select="'xmlns'"/>
Parameter colon
Namespace No namespace
Select ':'
Used by
Source
<xsl:param name="colon" select="':'"/>
Parameter equals
Namespace No namespace
Select '='
Used by
Source
<xsl:param name="equals" select="'='"/>
Parameter attribute-delimiter
Namespace No namespace
Select '"'
Used by
Source
<xsl:param name="attribute-delimiter" select="'"'"/>
Parameter comment-start
Namespace No namespace
Select '<!--'
Used by
Source
<xsl:param name="comment-start" select="'<!--'"/>
Parameter comment-end
Namespace No namespace
Select '-->'
Used by
Source
<xsl:param name="comment-end" select="'-->'"/>
Parameter pi-start
Namespace No namespace
Select '<?'
Used by
Source
<xsl:param name="pi-start" select="'<?'"/>
Parameter pi-end
Namespace No namespace
Select '?>'
Used by
Source
<xsl:param name="pi-end" select="'?>'"/>