Sophie

Sophie

distrib > Fedora > 17 > i386 > media > updates > by-pkgid > 675c8c8167236dfcf8d66da674f931e8 > files > 1824

erlang-doc-R15B-03.3.fc17.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html xmlns:fn="http://www.w3.org/2005/02/xpath-functions">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../../../doc/otp_doc.css" type="text/css">
<title>Erlang -- xmerl_xs</title>
</head>
<body bgcolor="white" text="#000000" link="#0000ff" vlink="#ff00ff" alink="#ff0000"><div id="container">
<script id="js" type="text/javascript" language="JavaScript" src="../../../../doc/js/flipmenu/flipmenu.js"></script><script id="js2" type="text/javascript" src="../../../../doc/js/erlresolvelinks.js"></script><script language="JavaScript" type="text/javascript">
            <!--
              function getWinHeight() {
                var myHeight = 0;
                if( typeof( window.innerHeight ) == 'number' ) {
                  //Non-IE
                  myHeight = window.innerHeight;
                } else if( document.documentElement && ( document.documentElement.clientWidth ||
                                                         document.documentElement.clientHeight ) ) {
                  //IE 6+ in 'standards compliant mode'
                  myHeight = document.documentElement.clientHeight;
                } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
                  //IE 4 compatible
                  myHeight = document.body.clientHeight;
                }
                return myHeight;
              }

              function setscrollpos() {
                var objf=document.getElementById('loadscrollpos');
                 document.getElementById("leftnav").scrollTop = objf.offsetTop - getWinHeight()/2;
              }

              function addEvent(obj, evType, fn){
                if (obj.addEventListener){
                obj.addEventListener(evType, fn, true);
                return true;
              } else if (obj.attachEvent){
                var r = obj.attachEvent("on"+evType, fn);
                return r;
              } else {
                return false;
              }
             }

             addEvent(window, 'load', setscrollpos);

             //--></script><div id="leftnav"><div class="innertube">
<img alt="Erlang logo" src="../../../../doc/erlang-logo.png"><br><small><a href="users_guide.html">User's Guide</a><br><a href="index.html">Reference Manual</a><br><a href="release_notes.html">Release Notes</a><br><a href="../pdf/xmerl-1.3.2.pdf">PDF</a><br><a href="../../../../doc/index.html">Top</a></small><p><strong>xmerl</strong><br><strong>Reference Manual</strong><br><small>Version 1.3.2</small></p>
<br><a href="javascript:openAllFlips()">Expand All</a><br><a href="javascript:closeAllFlips()">Contract All</a><p><small><strong>Table of Contents</strong></small></p>
<ul class="flipMenu">
<li id="no" title="xmerl_scan " expanded="false">xmerl_scan<ul>
<li><a href="xmerl_scan.html">
                  Top of manual page
                </a></li>
<li title="accumulate_whitespace-4"><a href="xmerl_scan.html#accumulate_whitespace-4">accumulate_whitespace/4</a></li>
<li title="cont_state-1"><a href="xmerl_scan.html#cont_state-1">cont_state/1</a></li>
<li title="cont_state-2"><a href="xmerl_scan.html#cont_state-2">cont_state/2</a></li>
<li title="event_state-1"><a href="xmerl_scan.html#event_state-1">event_state/1</a></li>
<li title="event_state-2"><a href="xmerl_scan.html#event_state-2">event_state/2</a></li>
<li title="fetch_state-1"><a href="xmerl_scan.html#fetch_state-1">fetch_state/1</a></li>
<li title="fetch_state-2"><a href="xmerl_scan.html#fetch_state-2">fetch_state/2</a></li>
<li title="file-1"><a href="xmerl_scan.html#file-1">file/1</a></li>
<li title="file-2"><a href="xmerl_scan.html#file-2">file/2</a></li>
<li title="hook_state-1"><a href="xmerl_scan.html#hook_state-1">hook_state/1</a></li>
<li title="hook_state-2"><a href="xmerl_scan.html#hook_state-2">hook_state/2</a></li>
<li title="rules_state-1"><a href="xmerl_scan.html#rules_state-1">rules_state/1</a></li>
<li title="rules_state-2"><a href="xmerl_scan.html#rules_state-2">rules_state/2</a></li>
<li title="string-1"><a href="xmerl_scan.html#string-1">string/1</a></li>
<li title="string-2"><a href="xmerl_scan.html#string-2">string/2</a></li>
<li title="user_state-1"><a href="xmerl_scan.html#user_state-1">user_state/1</a></li>
<li title="user_state-2"><a href="xmerl_scan.html#user_state-2">user_state/2</a></li>
</ul>
</li>
<li id="no" title="xmerl " expanded="false">xmerl<ul>
<li><a href="xmerl.html">
                  Top of manual page
                </a></li>
<li title="callbacks-1"><a href="xmerl.html#callbacks-1">callbacks/1</a></li>
<li title="export-2"><a href="xmerl.html#export-2">export/2</a></li>
<li title="export-3"><a href="xmerl.html#export-3">export/3</a></li>
<li title="export_content-2"><a href="xmerl.html#export_content-2">export_content/2</a></li>
<li title="export_element-2"><a href="xmerl.html#export_element-2">export_element/2</a></li>
<li title="export_element-3"><a href="xmerl.html#export_element-3">export_element/3</a></li>
<li title="export_simple-2"><a href="xmerl.html#export_simple-2">export_simple/2</a></li>
<li title="export_simple-3"><a href="xmerl.html#export_simple-3">export_simple/3</a></li>
<li title="export_simple_content-2"><a href="xmerl.html#export_simple_content-2">export_simple_content/2</a></li>
<li title="export_simple_element-2"><a href="xmerl.html#export_simple_element-2">export_simple_element/2</a></li>
</ul>
</li>
<li id="loadscrollpos" title="xmerl_xs " expanded="true">xmerl_xs<ul>
<li><a href="xmerl_xs.html">
                  Top of manual page
                </a></li>
<li title="built_in_rules-2"><a href="xmerl_xs.html#built_in_rules-2">built_in_rules/2</a></li>
<li title="select-2"><a href="xmerl_xs.html#select-2">select/2</a></li>
<li title="value_of-1"><a href="xmerl_xs.html#value_of-1">value_of/1</a></li>
<li title="xslapply-2"><a href="xmerl_xs.html#xslapply-2">xslapply/2</a></li>
</ul>
</li>
<li id="no" title="xmerl_eventp " expanded="false">xmerl_eventp<ul>
<li><a href="xmerl_eventp.html">
                  Top of manual page
                </a></li>
<li title="file_sax-4"><a href="xmerl_eventp.html#file_sax-4">file_sax/4</a></li>
<li title="stream-2"><a href="xmerl_eventp.html#stream-2">stream/2</a></li>
<li title="stream_sax-4"><a href="xmerl_eventp.html#stream_sax-4">stream_sax/4</a></li>
<li title="string_sax-4"><a href="xmerl_eventp.html#string_sax-4">string_sax/4</a></li>
</ul>
</li>
<li id="no" title="xmerl_xpath " expanded="false">xmerl_xpath<ul>
<li><a href="xmerl_xpath.html">
                  Top of manual page
                </a></li>
<li title="string-2"><a href="xmerl_xpath.html#string-2">string/2</a></li>
<li title="string-3"><a href="xmerl_xpath.html#string-3">string/3</a></li>
<li title="string-5"><a href="xmerl_xpath.html#string-5">string/5</a></li>
</ul>
</li>
<li id="no" title="xmerl_xsd " expanded="false">xmerl_xsd<ul>
<li><a href="xmerl_xsd.html">
                  Top of manual page
                </a></li>
<li title="file2state-1"><a href="xmerl_xsd.html#file2state-1">file2state/1</a></li>
<li title="format_error-1"><a href="xmerl_xsd.html#format_error-1">format_error/1</a></li>
<li title="process_schema-1"><a href="xmerl_xsd.html#process_schema-1">process_schema/1</a></li>
<li title="process_schema-2"><a href="xmerl_xsd.html#process_schema-2">process_schema/2</a></li>
<li title="process_schemas-1"><a href="xmerl_xsd.html#process_schemas-1">process_schemas/1</a></li>
<li title="process_schemas-2"><a href="xmerl_xsd.html#process_schemas-2">process_schemas/2</a></li>
<li title="process_validate-2"><a href="xmerl_xsd.html#process_validate-2">process_validate/2</a></li>
<li title="process_validate-3"><a href="xmerl_xsd.html#process_validate-3">process_validate/3</a></li>
<li title="state2file-1"><a href="xmerl_xsd.html#state2file-1">state2file/1</a></li>
<li title="state2file-2"><a href="xmerl_xsd.html#state2file-2">state2file/2</a></li>
<li title="validate-2"><a href="xmerl_xsd.html#validate-2">validate/2</a></li>
<li title="validate-3"><a href="xmerl_xsd.html#validate-3">validate/3</a></li>
</ul>
</li>
<li id="no" title="xmerl_sax_parser " expanded="false">xmerl_sax_parser<ul>
<li><a href="xmerl_sax_parser.html">
                  Top of manual page
                </a></li>
<li title="file-2"><a href="xmerl_sax_parser.html#file-2">file/2</a></li>
<li title="stream-2"><a href="xmerl_sax_parser.html#stream-2">stream/2</a></li>
<li title="ContinuationFun-1"><a href="xmerl_sax_parser.html#ContinuationFun-1">ContinuationFun/1</a></li>
<li title="EventFun-3"><a href="xmerl_sax_parser.html#EventFun-3">EventFun/3</a></li>
</ul>
</li>
</ul>
</div></div>
<div id="content">
<div class="innertube">
<!-- refpage --><center><h1>xmerl_xs</h1></center>

<h3>MODULE</h3>
<div class="REFBODY">xmerl_xs</div>
<h3>MODULE SUMMARY</h3>
<div class="REFBODY">
       Erlang has similarities to XSLT since both languages
 	have a functional programming approach.</div>
<h3>DESCRIPTION</h3>
<div class="REFBODY"><p>
<p>
       Erlang has similarities to XSLT since both languages
 	have a functional programming approach. Using <span class="code">xmerl_xpath</span>	 
it is possible to write XSLT like transforms in Erlang.</p>

     <p>XSLT stylesheets are often used when transforming XML
       documents, to other XML documents or (X)HTML for presentation.
       XSLT contains quite many
       functions and learning them all may take some effort.
       This document assumes a basic level of
       understanding of XSLT.
     </p>
     <p>Since XSLT is based on a functional programming approach
       with pattern matching and recursion it is possible to write
       similar style sheets in Erlang. At least for basic
       transforms. This
       document describes how to use the XPath implementation together
       with Erlangs pattern matching and a couple of functions to write
       XSLT like transforms.</p>
     <p>This approach is probably easier for an Erlanger but
       if you need to use real XSLT stylesheets in order to "comply to
       the standard" there is an adapter available to the Sablotron
       XSLT package which is written i C++.
 See also the <span class="bold_code"><a href="xmerl_xs_examples.html">Tutorial</a></span>.
     </p></p></div>
<h3>EXPORTS</h3>
<p><a name="built_in_rules-2"><span class="bold_code">built_in_rules(Fun, E) -&gt; List</span></a><br></p>
<div class="REFBODY"><p><a name="built_in_rules-2"></a>

<p>The default fallback behaviour. Template funs should end with:
  <br><span class="code">template(E) -&gt; built_in_rules(fun template/1, E)</span>.</p>
</p></div>
<p><a name="select-2"><span class="bold_code">select(String::string(), E) -&gt; E</span></a><br></p>
<div class="REFBODY"><p><a name="select-2"></a>

<p>Extracts the nodes from the xml tree according to XPath.</p>
<p><strong>See also:</strong> <span class="bold_code"><a href="#value_of-1">value_of/1</a></span>.</p>
</p></div>
<p><a name="value_of-1"><span class="bold_code">value_of(E) -&gt; List</span></a><br></p>
<div class="REFBODY">
<p>Types:</p>
<div class="REFTYPES">
<span class="bold_code">E = unknown()</span><br>
</div>
</div>
<div class="REFBODY"><p><a name="value_of-1"></a>

<p>Concatenates all text nodes within the tree.</p>
 
  <p>Example:</p><br><div class="example"><pre>
  &lt;xsl:template match="title"&gt;
    &lt;div align="center"&gt;
      &lt;h1&gt;&lt;xsl:value-of select="." /&gt;&lt;/h1&gt;
    &lt;/div&gt;
  &lt;/xsl:template&gt;
  </pre></div>
 
   <p>becomes:</p><br> <div class="example"><pre>
   template(E = #xmlElement{name='title'}) -&gt;
     ["&lt;div align="center"&gt;&lt;h1&gt;",
       value_of(select(".", E)), "&lt;/h1&gt;&lt;/div&gt;"]
  </pre></div>
</p></div>
<p><a name="xslapply-2"><span class="bold_code">xslapply(Fun::Function, EList::list()) -&gt; List</span></a><br></p>
<div class="REFBODY">
<p>Types:</p>
<div class="REFTYPES">
<span class="bold_code">Function = () -&gt; list()</span><br>
</div>
</div>
<div class="REFBODY"><p><a name="xslapply-2"></a>

<p>xslapply is a wrapper to make things look similar to  
xsl:apply-templates.</p>
 
  <p>Example, original XSLT:</p><br><div class="example"><pre>
  &lt;xsl:template match="doc/title"&gt;
    &lt;h1&gt;
      &lt;xsl:apply-templates/&gt;
    &lt;/h1&gt;
  &lt;/xsl:template&gt;
  </pre></div>
 
  <p>becomes in Erlang:</p><br><div class="example"><pre>
  template(E = #xmlElement{ parents=[{'doc',_}|_], name='title'}) -&gt;
    ["&lt;h1&gt;",
     xslapply(fun template/1, E),
     "&lt;/h1&gt;"];
  </pre></div>
</p></div>


 
 </div>
<div class="footer">
<hr>
<p>Copyright © 2004-2012 Ericsson AB. All Rights Reserved.</p>
</div>
</div>
</div></body>
</html>