将XSLT做为HTML的款式表的应用方式示例

日期:2021-03-05 类型:科技新闻 

关键词:公众号小程序,小程序正规价格表,微信群签到小程序,网络抽签小程序,个人做小程序需要什么

 简介  

当听到款式表这个词时,您将会会想起 CSS 款式表。XSLT 款式表一般用于 XML 变换,例如在 Web 服务之间投射数据信息。由于 XSLT 十分合适此主要用途,因此建立了高层元素 <stylesheet> 的 <xsl:transform> 别称,尽管这非常少应用。这类 XSLT 变换的键入构造与輸出构造有很大的不一样。最关键的是,取名室内空间的不一样。

  XSLT 款式表的键入构造与輸出构造类似,但却更简易些。在其中早已扩充了1些标识,但绝大多数标识只是原样拷贝到輸出。键入和輸出的取名室内空间是同样的 (HTML)。键入文本文档还可以包括款式表命令(例如建立脚注),这些命令属于另外一个取名室内空间,不容易传送到輸出中。
常见缩略语

    CSS:联级款式表
    XHTML:可拓展超文字标识語言
    XPath:XML 相对路径語言
    XSLT:可拓展款式表語言变换

  在本文中,大家将学习培训怎样应用 XSLT 款式表扩充 XHTML 文本文档。文中的示例展现了怎样应用命令,怎样引入别的源文本文档的一部分,和怎样应用连接在主文本文档中导航栏。另外,大家还探寻了网页页面的解释和编译程序之间的差别。
CSS 款式表的局限性

  XSLT 款式表不容易阻拦您应用别的技术性,例如 JavaScript 或 CSS。CSS 可用于字体样式、加粗、色调、间隔等。它不合适未来自不一样部位的信息内容组成在1起,例如脚注、控制模块或转化成1个文件目录。这更是 XSLT 的用武的地方,它填补而并不是取代了 CSS。
XSLT 主要用途示例

  具体上,您能够将 XSLT 编码集中化在1个文档中。以便简易起见,本文中的每一个示例均坐落于1个单独的 XSLT 文档中,除1些必要的编码。清单 1 得出了必须的编码。

  清单 1. 必须的编码(坐落于 samples/common.xml 中)

 

XML/HTML Code拷贝內容到剪贴板
  1. <s:stylesheet  
  2.     <span style="width: auto; height: auto; float: none;" id="24_nwp"><a style="text-decoration: none;" mpid="24" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=xml&k0=xml&kdi0=0&luki=10&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="24_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">xml</span></a></span>ns="http://www.w3.org/1999/xhtml"  
  3.     xmlns:h="http://www.w3.org/1999/xhtml"  
  4.     xmlns:a="http://sourceforge.net/projects/arbalo/"  
  5.     xmlns:s="http://www.w3.org/1999/XSL/Transform"  
  6.     exclude-result-prefixes="a h"  
  7.     version="1.0"  
  8. >  
  9.     <s:template match="h:<span style="width: auto; height: auto; float: none;" id="25_nwp"><a style="text-decoration: none;" mpid="25" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=head&k0=head&kdi0=0&luki=9&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="25_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">head</span></a></span>">  
  10.         <s:copy>  
  11.             <s:apply-templates select="@*|node()"/>  
  12.             <meta  
  13.                 http-equiv="content-type"  
  14.                 content="text/html;charset=UTF⑻" />  
  15.             <link  
  16.                 href="common.<span style="width: auto; height: auto; float: none;" id="26_nwp"><a style="text-decoration: none;" mpid="26" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=css&k0=css&kdi0=0&luki=8&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="26_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">css</span></a></span>"   
  17.                 rel="stylesheet"  
  18.                 type="text/css" />  
  19.         </s:copy>  
  20.     </s:template>  
  21.         
  22.     <s:template match="*">  
  23.         <s:copy>  
  24.             <s:copy-of select="@*"/>  
  25.             <s:apply-templates/>  
  26.         </s:copy>  
  27.     </s:template>  
  28. </s:stylesheet>  

  XHTML 的取名室内空间界定了两次:默认设置界定和 h:。默认设置取名室内空间用于撰写輸出 XHTML 标识,在其中应当防止应用取名室内空间前缀。h: 用在 XPath 表述式中。

  本文应用 XSLT 1.0 版本号。现阶段,绝大多数访问器都没法解释 XSLT 2.0。可是,假如 XSLT 运作在服务器上,那末它将会是1个好用的挑选。XSLT 2.0 还出示了:

    XPATH 2.0(if…then…else 和很多内嵌的涵数)
    内嵌和客户撰写的 XPATH 涵数
    排序

  在 清单 1 中:

    s:template match="head" 扩充了源文本文档的 head 1节,加上了1个 CSS 款式表的连接。即便 UTF⑻ 是在 XML 中的默认设置编号,1些访问器也必须內容种类才可以展现它。
    s:template match="*" 是默认设置的详尽副本。标准上,全部內容都会拷贝到总体目标文本文档中。假如忽略了此模版,只会将标识的文字內容拷贝到总体目标文本文档。不容易拷贝解决命令连接点。

  本文中的全部别的示例全是导入 common.xsl 的单独文档。
扩充

  根据扩充,加上了1个未在源文本文档中显式恳求的特点。1个示例是 清单 1 中的 CSS 款式表的连接。尝试另外一个示例,向每一个內部连接加上1个小箭头 (^ v),指明总体目标在它以前還是以后。清单 2 得出了该款式表。

  清单 2. 款式表(在 samples/linkUpDown.xsl 中)

 

XML/HTML Code拷贝內容到剪贴板
  1. <s:stylesheet  
  2.     <span style="width: auto; height: auto; float: none;" id="22_nwp"><a style="text-decoration: none;" mpid="22" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=xml&k0=xml&kdi0=0&luki=10&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="22_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">xml</span></a></span>ns="http://www.w3.org/1999/xhtml"  
  3.     xmlns:h="http://www.w3.org/1999/xhtml"  
  4.     xmlns:s="http://www.w3.org/1999/XSL/Transform"  
  5.     version="1.0"  
  6. >  
  7.     <s:import href="common.xsl"/>  
  8.     <s:template match="h:a[starts-with(@href,'#')]">  
  9.         <s:copy>  
  10.             <s:copy-of select="@*"/>  
  11.             <s:variable name="name" select="substring-after(@href,'#')"/>  
  12.             <s:choose>  
  13.                 <s:when test="preceding::h:a[@name=$name]">  
  14.                     <s:text>^</s:text>  
  15.                 </s:when>  
  16.                 <s:when test="following::h:a[@name=$name]">  
  17.                     <s:text>v</s:text>  
  18.                 </s:when>  
  19.             </s:choose>  
  20.             <s:apply-templates/>  
  21.         </s:copy>  
  22.     </s:template>  
  23. </s:stylesheet>  

  最先,导入清单 2 中的通用性款式表。模版与內部连接(以 '#' 开始)相配对。假如连接指向的锚点坐落于连接以前,那末应用1个向上箭头扩充该连接(假如状况相反,则应用向下箭头)。

  s:copy-of 和 s:apply-templates 可保证不容易沿途丢下任何內容。

  清单 3 得出了1个示例文本文档(在其中包括內部连接),它历经了清单 2 中的款式表开展扩充。

  清单 3. 源文本文档(在 samples/linkUpDown.xml 中)
 

XML/HTML Code拷贝內容到剪贴板
  1. <?<span style="width: auto; height: auto; float: none;" id="20_nwp"><a style="text-decoration: none;" mpid="20" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=xml&k0=xml&kdi0=0&luki=10&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="20_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">xml</span></a></span>-stylesheet href="linkUpDown.xsl" type="text/xsl"?>  
  2.  <html xmlns="http://www.w3.org/1999/xhtml">  
  3.     <<span style="width: auto; height: auto; float: none;" id="21_nwp"><a style="text-decoration: none;" mpid="21" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=head&k0=head&kdi0=0&luki=9&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="21_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">head</span></a></span>/>  
  4.     <body>  
  5.         <a name="a"/>  
  6.         <p>This link goes <a href="vb">downward.</a></p>  
  7.         <br/>  
  8.         <p>Reduce the size of the window to verify the link really works.</p>  
  9.         <br/>  
  10.         <a name="b"/>  
  11.         <p>This link goes <a href="^a">upward.</a>  
  12.         </p>  
  13.     </body>  
  14. </html>         

  总体目标文本文档看起来同样,除清单 4 中的条目。
  清单 4. 总体目标文本文档(在 samples/linkUpDown.html 中)

XML/HTML Code拷贝內容到剪贴板
  1. … <a href="#b">v downwards.</a> …   
  2.    … <a href="#a">^ upwards.</a> …  

命令

  您能够在源文本文档中加上1些命令,告知款式表实行何种实际操作。它们属于另外一个取名室内空间(在本例中为前缀 a:),不容易被拷贝到总体目标文本文档。

  在清单 5 中,源文本文档中任何地区的命令标识 a:ref 都会建立1个脚注。

  清单 5. 款式表(在 samples/footnote.xsl 中)
 

XML/HTML Code拷贝內容到剪贴板
  1. <s:stylesheet  
  2.     <span style="width: auto; height: auto; float: none;" id="19_nwp"><a style="text-decoration: none;" mpid="19" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=xml&k0=xml&kdi0=0&luki=10&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="19_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">xml</span></a></span>ns="http://www.w3.org/1999/xhtml"  
  3.     xmlns:a="http://sourceforge.net/projects/arbalo/"  
  4.     xmlns:h="http://www.w3.org/1999/xhtml"  
  5.     xmlns:s="http://www.w3.org/1999/XSL/Transform"  
  6.     version="1.0"  
  7. >  
  8.     <s:import href="common.xsl"/>  
  9.     <s:template match="h:body">  
  10.         <s:copy>  
  11.             <s:apply-templates select="@*|node()"/   
  12.             <!-- put the footnotes at the end   
  13.                 if there is no a:references directive -->  
  14.             <s:if test="not(descendant::a:references)">  
  15.                 <s:call-template name="references"/>  
  16.             </s:if>  
  17.         </s:copy>  
  18.     </s:template>  
  19.     <!-- Create a footnote -->  
  20.     <s:template match="a:ref">  
  21.         <s:variable  
  22.             name="number"  
  23.             select="count(preceding::a:ref) + 1"/>  
  24.         <a name="ref-{$number}"></a>  
  25.         <a class="footnote" href="#reference-{$number}">  
  26.             <s:value-of select="concat('v ',$number)"/>  
  27.         </a>  
  28.     </s:template>  
  29.     <!-- if a:reference is missing, assume it at the end of the body -->  
  30.     <s:template match="a:references" name="references">  
  31.         <hr/>  
  32.         <s:for-each select="//a:ref">  
  33.             <s:variable name="number" select="count(preceding::a:ref) + 1"/>  
  34.             <p>  
  35.                 <a name="reference-{$number}"></a>  
  36.                 <a class="footnote" href="#ref-{$number}">  
  37.                     <s:value-of select="concat(' ^',$number)"/>  
  38.                 </a>  
  39.                 <s:apply-templates/>  
  40.             </p>  
  41.         </s:for-each>  
  42.     </s:template>  
  43. </s:stylesheet>  

  应用源文本文档中的 a:references 命令,名为 references 的模版会在模版与该命令配对的地区分派脚注。假如缺乏这样1个命令,第1个与 body 配对的模版会在 body 的结尾分派脚注,方式是启用名为 references 的同样模版。在两种状况下,都会列出脚注的內容,并转化成1个由向上箭头表明的向上连接。

  第2个模版(配对 a:ref)应用向下箭头建立脚注的连接。脚注具备序号。这里忽视了它的內容。

  class="footnote" 特性在 XSLT 变换以后由1个 CSS 款式表分析,该款式表连接在 XSLT 款式表 common.xsl 中。

  清单 6 中的源文本文档应用 a:ref 命令建立脚注。

  清单 6. 源文本文档(在 samples/footnote.xml 中)
 

XML/HTML Code拷贝內容到剪贴板
  1. <?<span style="width: auto; height: auto; float: none;" id="17_nwp"><a style="text-decoration: none;" mpid="17" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=xml&k0=xml&kdi0=0&luki=10&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="17_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">xml</span></a></span>-stylesheet href="footnote.xsl" type="text/xsl"?>  
  2. <html  
  3.     xmlns="http://www.w3.org/1999/xhtml"  
  4.     xmlns:a="http://sourceforge.net/projects/arbalo/"  
  5. >  
  6.     <<span style="width: auto; height: auto; float: none;" id="18_nwp"><a style="text-decoration: none;" mpid="18" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=head&k0=head&kdi0=0&luki=9&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="18_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">head</span></a></span>/>  
  7.     <body>  
  8.         <p>  
  9.             This example looks a little scientific   
  10.             <a:ref>  
  11.                 From Latin   
  12.                 <em>scientia</em>  
  13.             </a:ref>  
  14.             and academic   
  15.             <a:ref>From Greek akademia</a:ref>.   
  16.         </p>  
  17.         <p>  
  18.             Do you know why?   
  19.             <a:ref>  
  20.                 It uses   
  21.                 <em>footnotes</em>.   
  22.             </a:ref>  
  23.         </p>  
  24.         <p>Reduce size of window to verify links are generated.</p>  
  25.             
  26.         
  27.     </body>  
  28. </html>  

  总体目标文本文档将脚注目录包括在底部,如清单 7 所示。

  清单 7. 总体目标文本文档(在 samples/footnote.html 中)

 

XML/HTML Code拷贝內容到剪贴板
  1. <html  
  2.     <span style="width: auto; height: auto; float: none;" id="14_nwp"><a style="text-decoration: none;" mpid="14" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=xml&k0=xml&kdi0=0&luki=10&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="14_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">xml</span></a></span>ns="http://www.w3.org/1999/xhtml"  
  3.    xmlns:h="http://www.w3.org/1999/xhtml"  
  4.    xmlns:a="http://sourceforge.net/projects/arbalo/">  
  5.    <<span style="width: auto; height: auto; float: none;" id="15_nwp"><a style="text-decoration: none;" mpid="15" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=head&k0=head&kdi0=0&luki=9&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="15_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">head</span></a></span>><link type="text/<span style="width: auto; height: auto; float: none;" id="16_nwp"><a style="text-decoration: none;" mpid="16" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=css&k0=css&kdi0=0&luki=8&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="16_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">css</span></a></span>rel="stylesheet" href="common.css"/></head>  
  6.    <body>  
  7.       <p>This example looks a little scientific   
  8.          <a name="ref⑴"/><a href="#reference⑴" class="footnote">v 1</a>  
  9.          and academic.   
  10.          <a name="ref⑵"/><a href="#reference⑵" class="footnote">v 2lt;/a>  
  11.       </p>  
  12.       <p>Do you know why?   
  13.          <a name="ref⑶"/><a href="#reference⑶" class="footnote">v 3</a>  
  14.       </p>  
  15.       <p>Reduce size of window to verify links are generated.</p>  
  16.       br/><br/>  
  17.    <hr/>  
  18.    <p><a name="reference⑴"/><a href="#ref⑴" class="footnote"> ^1</a>  
  19.       From Latin   
  20.       <em>scientia</em>  
  21.    </p>  
  22.    <p><a name="reference⑵"/>  
  23.       <a href="#ref⑵" class="footnote"> ^2</a>From Greek akademia</p>  
  24.    <p><a name="reference⑶"/><a href="#ref⑶" class="footnote"> ^3</a>  
  25.       It uses   
  26.       <em>footnotes</em>.   
  27.    </p>  
  28.    </body>  
  29. </html>  

提升源文本文档的界限

  也可引入别的源文本文档的在其中1些一部分。a:include 命令包括1个将会属于另外一个源文本文档的元素并变换它,如清单 8 所示。

  清单 8. 款式表(在 samples/include.xsl 中)

 

XML/HTML Code拷贝內容到剪贴板
  1. <s:stylesheet  
  2.     <span style="width: auto; height: auto; float: none;" id="12_nwp"><a style="text-decoration: none;" mpid="12" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=xml&k0=xml&kdi0=0&luki=10&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="12_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">xml</span></a></span>ns="http://www.w3.org/1999/xhtml"  
  3.     xmlns:a="http://sourceforge.net/projects/arbalo/"  
  4.     xmlns:s="http://www.w3.org/1999/XSL/Transform"  
  5.     version="1.0"  
  6. >  
  7.     <s:import href="common.xsl"/>  
  8.     <s:template  match="a:include">  
  9.         <s:choose>  
  10.             <s:when test="0!=string-length(@src)">  
  11.                 <s:apply-templates  
  12.                     select="document(@src)//*[@id=current()/@refid]"/>  
  13.             </s:when>  
  14.             <s:when test="not(@<span style="width: auto; height: auto; float: none;" id="13_nwp"><a style="text-decoration: none;" mpid="13" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=src&k0=src&kdi0=0&luki=7&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="13_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">src</span></a></span>) and //a:default[1]/@src">  
  15.                 <s:apply-templates  
  16. select="document(//a:default[1]/@src)//*[@id=current()/@refid]"/>  
  17.             </s:when>  
  18.             <s:when test="0=string-length(@src) or not(//a:default[1]/@src)">  
  19.                 <s:apply-templates  
  20.                     select="//*[@id=current()/@refid]"/>  
  21.             </s:when>  
  22.         </s:choose>  
  23.     </s:template>  
  24. </s:stylesheet>  

  源文本文档中的1个 a:include 命令引入源元素的 id。包括该元素的文本文档可在1个 src 特性中取名。假如缺乏该特性,将应用 a:default 命令的 src 特性。假如在任何地区都沒有 src 特性,则应用同1个源文本文档。因而,refid 会引入 id 来防止无尽的递归。

  导入的元素将会具备1种繁杂的种类,并在包括 (apply-templates)以后开展变换。清单 9、清单 10 和清单 11 得出了示例。

  清单 9. 源文本文档(在 samples/include.xml 中)

 

XML/HTML Code拷贝內容到剪贴板
  1. <?<span style="width: auto; height: auto; float: none;" id="7_nwp"><a style="text-decoration: none;" mpid="7" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=xml&k0=xml&kdi0=0&luki=10&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="7_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">xml</span></a></span>-stylesheet href="include.xsl" type="text/xsl"?>  
  2. <html  
  3.     xmlns="http://www.w3.org/1999/xhtml"  
  4.     xmlns:a="http://sourceforge.net/projects/arbalo/">  
  5.     <<span style="width: auto; height: auto; float: none;" id="8_nwp"><a style="text-decoration: none;" mpid="8" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=head&k0=head&kdi0=0&luki=9&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="8_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">head</span></a></span>>  
  6.         <a:default <span style="width: auto; height: auto; float: none;" id="9_nwp"><a style="text-decoration: none;" mpid="9" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=src&k0=src&kdi0=0&luki=7&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="9_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">src</span></a></span>="includedY.xml"/>  
  7.     </head>  
  8.     <body>  
  9.         <p>The following text is included:</p>  
  10.         <a:include refid="x" src="includedX.xml"/>  
  11.         <a:include refid="y1"/>  
  12.         <p id="i"><span style="width: auto; height: auto; float: none;" id="10_nwp"><a style="text-decoration: none;" mpid="10" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=double&k0=double&kdi0=0&luki=6&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="10_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">double</span></a></span></p>  
  13.         <a:include refid="y2"/>  
  14.         <a:include refid="i" src=""/>  
  15.     </body>  
  16. </html>  

  清单 10. 源文本文档的一部分(在 samples/includeY.xml 中)

XML/HTML Code拷贝內容到剪贴板
  1. <h2 id="y2">I'm the <em>included</em> h2</h2>  
  2. <h1 id="y1">I'm the <em>included</em> h1</h1>  

  清单 11. 总体目标文本文档(在 samples/include.html 中)
 

XML/HTML Code拷贝內容到剪贴板
  1. <body>  
  2.         <p>The following text is included:</p>  
  3.         <p id="x">I'm the <em>included</em> paragraph.</p>  
  4.         <h1 id="y1">I'm the <em>included</em> h1</h1>  
  5.         <p id="i"><span style="width: auto; height: auto; float: none;" id="6_nwp"><a style="text-decoration: none;" mpid="6" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d14555d819ab7000&k=double&k0=double&kdi0=0&luki=6&n=10&p=baidu&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=70ab19d85545d1&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F1117%2Ehtml&urlid=0" id="6_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">double</span></a></span></p>  
  6.         <h2 id="y2">I'm the <em>included</em> h2</h2>  
  7.         <p id="i">double</p>  
  8.     </body>  
  9. </html>  

主文本文档和导航栏

  假如您有1个包括好几个网页页面的演试,有1个主文本文档包括网页页面题目及其连接。您能够转化成详细的导航栏,从每一个网页页面到任何等他网页页面,和到前1个和后1个网页页面。这些细节不属于本文的详细介绍范畴,但 参照材料 中出示了应用主文本文档的 HTML 演试的连接。可将 .xml 更换为 .html 来得到编译程序后的版本号。让访问器向您显示信息 .xml 的干净整洁源码。您会对它转化成的源码量觉得惊讶。
解释与编译程序的比照

  解释代表着网页页面为 XML 文件格式(其文档拓展名为 .xml,其內容种类为文字/xml 或运用程序流程/xml),而且解决命令所引入的 XSLT 款式表可在访问器中实行。

  编译程序代表着访问器看到的是 HTML(其文档拓展名为 .html,內容种类为文字/html),它是在恳求网页页面以前从您的开发设计自然环境中或服务器上的 XML 变换而来的。Xalan 和 Saxon 全是知名的 XSLT 解决器。

  解释是将来的发展趋势方位。全部当代访问器都适用 XSLT,而且它具备1些优势:

    当检测时,您会马上得到結果。只需在您检测的每一个访问器中按下 F5,便可反应源网页页面、CSS 和 XSLT 款式表的变更。
    要传送给顾客端信息内容量降低了。
    顾客端看到的是1个整洁、干净整洁的网页页面,由于还未转化成扩充內容。

  但也要留意1些缺陷:

    有1些旧访问器将会不适用 XSLT。假如向1个可控的自然环境(內部网)公布网页页面,就不容易出現难题。
    1些当代访问器严禁 XSLT 款式表引入另外一个文件目录中的另外一个款式表。
    将 XSLT 域别的作用相融合(例如 SVG 或 iframe)将会在1些访问器中致使难题。
    由于绝大多数访问器都不适用 XSLT 2.0 或将要推出的 3.0,因此您没法应用新作用。沒有 XPath 2.0 if () then … else,也沒有客户撰写的 XPath 作用。

  不管开展编译程序還是解释,网页页面的别的变换 (CSS、JavaScript) 都会在 XSLT 变换以后实行。
完毕语

  在本文中,您学习培训了怎样应用 XSLT 款式表来扩充 XHTML 文本文档。您可使用本文中的示例做为起始点,搭建您自身的 XSLT 款式表。

文章内容和XML示例