<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wbex.ru/index.php?action=history&amp;feed=atom&amp;title=XML%2FXSLT_stylesheet%2Ffunction</id>
		<title>XML/XSLT stylesheet/function - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wbex.ru/index.php?action=history&amp;feed=atom&amp;title=XML%2FXSLT_stylesheet%2Ffunction"/>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=XML/XSLT_stylesheet/function&amp;action=history"/>
		<updated>2026-04-04T18:51:35Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wbex.ru/index.php?title=XML/XSLT_stylesheet/function&amp;diff=10469&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=XML/XSLT_stylesheet/function&amp;diff=10469&amp;oldid=prev"/>
				<updated>2010-05-26T08:26:24Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 08:26, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wbex.ru/index.php?title=XML/XSLT_stylesheet/function&amp;diff=10468&amp;oldid=prev</id>
		<title> в 18:22, 25 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=XML/XSLT_stylesheet/function&amp;diff=10468&amp;oldid=prev"/>
				<updated>2010-05-25T18:22:29Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Define and use function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File: Data.xml&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;parts&amp;gt;&lt;br /&gt;
  &amp;lt;part id=&amp;quot;p10&amp;quot; idref=&amp;quot;p20&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;part id=&amp;quot;p20&amp;quot; idref=&amp;quot;p30 p40&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;part id=&amp;quot;p30&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;part id=&amp;quot;p40&amp;quot; idref=&amp;quot;p10&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/parts&amp;gt;&lt;br /&gt;
File: Transform.xml&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:transform xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
  xmlns:graph=&amp;quot;http://wrox.ru/569090/graph&amp;quot;&lt;br /&gt;
  xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; version=&amp;quot;2.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:function name=&amp;quot;graph:refers&amp;quot; as=&amp;quot;xs:boolean&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:param name=&amp;quot;links&amp;quot; as=&amp;quot;node()&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:param name=&amp;quot;A&amp;quot; as=&amp;quot;node()&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:param name=&amp;quot;B&amp;quot; as=&amp;quot;node()&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:variable name=&amp;quot;direct&amp;quot; as=&amp;quot;node()*&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates select=&amp;quot;$links&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:with-param name=&amp;quot;from&amp;quot; select=&amp;quot;$A&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:apply-templates&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:sequence&lt;br /&gt;
      select=&amp;quot;if (exists($direct intersect $B)) then true()&lt;br /&gt;
                         else if (some $C in $direct &lt;br /&gt;
                                  satisfies graph:refers($links, $C, $B)) then true()&lt;br /&gt;
                         else false()&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:transform&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==local function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File: Data.xml&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;SCENE&amp;gt;&lt;br /&gt;
  &amp;lt;TITLE&amp;gt;title 1&amp;lt;/TITLE&amp;gt;&lt;br /&gt;
  &amp;lt;STAGEDIR&amp;gt;A&amp;lt;/STAGEDIR&amp;gt;&lt;br /&gt;
  &amp;lt;SPEECH&amp;gt;&lt;br /&gt;
    &amp;lt;SPEAKER&amp;gt;B&amp;lt;/SPEAKER&amp;gt;&lt;br /&gt;
    &amp;lt;LINE&amp;gt;C&amp;lt;/LINE&amp;gt;&lt;br /&gt;
    &amp;lt;LINE&amp;gt;D&amp;lt;/LINE&amp;gt;&lt;br /&gt;
    &amp;lt;LINE&amp;gt;E&amp;lt;/LINE&amp;gt;&lt;br /&gt;
    &amp;lt;LINE&amp;gt;F&amp;lt;/LINE&amp;gt;&lt;br /&gt;
  &amp;lt;/SPEECH&amp;gt;&lt;br /&gt;
&amp;lt;/SCENE&amp;gt;&lt;br /&gt;
File: Transform.xslt&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:transform xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
  xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
  xmlns:local=&amp;quot;local-functions.uri&amp;quot; exclude-result-prefixes=&amp;quot;xs local&amp;quot;&lt;br /&gt;
  version=&amp;quot;2.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:variable name=&amp;quot;speakers&amp;quot; as=&amp;quot;xs:string*&amp;quot;&lt;br /&gt;
    select=&amp;quot;for $w in distinct-values(//LINE)&lt;br /&gt;
                      return upper-case($w)&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:function name=&amp;quot;local:split&amp;quot; as=&amp;quot;xs:string*&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:param name=&amp;quot;line&amp;quot; as=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:sequence select=&amp;quot;tokenize($line, &amp;quot;\W&amp;quot;)&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:function name=&amp;quot;local:is-character&amp;quot; as=&amp;quot;xs:boolean&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:param name=&amp;quot;word&amp;quot; as=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:sequence select=&amp;quot;upper-case($word)=$speakers&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template name=&amp;quot;scan-line&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:param name=&amp;quot;words&amp;quot; as=&amp;quot;xs:string*&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:if test=&amp;quot;count($words) ge 3&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if&lt;br /&gt;
        test=&amp;quot;local:is-character($words[1]) and&lt;br /&gt;
                   lower-case($words[2]) = &amp;quot;and&amp;quot; and&lt;br /&gt;
                   local:is-character($words[3])&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select=&amp;quot;$words[position() = 1 to 3]&amp;quot;&lt;br /&gt;
            separator=&amp;quot; &amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;naming-lines&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;//LINE&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&amp;quot;scan-line&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;words&amp;quot;&lt;br /&gt;
            select=&amp;quot;local:split(.)&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/naming-lines&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:transform&amp;gt;&lt;br /&gt;
Output:&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;naming-lines/&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>