⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xsl~1l.htm

📁 这是一本关于XML的学习的书
💻 HTM
📖 第 1 页 / 共 2 页
字号:
   </xsl:template>
   <xsl:template match = "recipe_name">
      <H2>
      <xsl:process-children/>
      </H2>
   </xsl:template>
   <xsl:template match = "meal">
      <TABLE><TR><TD><H3>EAT FOR:</H3></TD>
      <TD><H3><xsl:process-children/></H3></TD>
      </TR></TABLE>
   </xsl:template>
   <xsl:template match = "directions">
      <H4>DIRECTIONS</H4>
      <P>
      <xsl:process-children/>
      </P>
   </xsl:template>
   <xsl:template match = "ingredients">
       <B>INGREDIENTS</B><BR></BR>
       <xsl:process-children/>
   </xsl:template>
   <xsl:template match = "item">
       <BR>
      <xsl:process-children/>
      </BR>
   </xsl:template>
</xsl:stylesheet>

</span></pre>
      <p><span class="normal105">其结果不会使我得到任何设计奖,但是它是一个能起作用的XSL。这里可能只有下面的命令需要解释:</span></p>
      <pre>
  <span class="normal105">&lt;xsl:template match = "/"&gt;
    &lt;HTML&gt;
     &lt;BODY&gt;
         &lt;xsl:process-children/&gt;
     &lt;/BODY&gt;
     &lt;/HTML&gt;
 &lt;/xsl:template&gt;
</span></pre>
      <p><span class="normal105">第一行的"/"告诉处理器这个节点应用到XML文档的根上。于是,这部分中的命令是结果树的基础。处理器被告之把&lt;HTML&gt;和&lt;BODY&gt;标记符放在文档的开始和结尾处,然后处理或打印所有的子元素。因为它是根元素,所以意味着“打印所有的东西。”</span></p>
      <p><span class="normal105">现在,如果你考虑几秒钟,就会觉得有点古怪。如果根层的process-children命令把源代码传递给结果树,那么所有与模板匹配的节点都可以与已经经过处理的源码一起工作。</span></p>
      <p><span class="normal105">然而,出现的问题是:XSL有一套确定哪些内容被传递给结果树的规则,其中最重要的规则是,最特定的匹配将会赢。显然,元素名的模板匹配比根层的匹配更特定。因此,所有模板匹配的节点将超越根层的规则。</span></p>
      <p><span class="normal105">注意用XML数据添加HTML标记符是多么的容易。当XSL处理器看到那些不在XSL词汇表中的标记符时,就会把他们传递给结果树。如果你花些时间,就可能发现其中巨大的潜力。XSL可以被用做一种转换语言。存储在一个XML文件中的数据可以用完全不同的标记符转换到另一个文件中。还有,信息可以被修改成与可以对应一套不同的标记符集的XML应用程序一起工作的形式。</span></p>
      <p><span class="normal105">而且还不只这些,如人们所期望的,样式表可以用匹配的标记符打开和关闭,其中是一套组织良好的单元。 
        很好,但是还有限制。</span></p>
      <h4> <u><a href="#top">&lt;&lt;Top</a></u> </h4>
      <h3><br>
        <b><a name="4"></a>第四节:选择XSL</b></h3>
      <p><span class="normal105">简单的&lt;xsl:template match&gt;还不能完全满足我们的要求。比如,我希望当&lt;course&gt;标记符出现时取消&lt;meal&gt;标记符的内容。这样的话我就不用担心节面上同时显示"dinner"和"appetizer"。我可能还希望通过在最后的ingredient后面插入大量的空白来调整版面。</span></p>
      <p><span class="normal105">如同某个广告部的人说的:所有这些都是可能的 - 还要更多。SL有一套用来把元素与其父成员或子成员匹配的工具。它也允许位置上的匹配。例如,可以在第一个和最后一个某个特定元素上应用特定的格式,等等。</span></p>
      <p><span class="normal105">现在让我们考虑一些更复杂的事,比如令我在梦中出汗的任务。我需要菜谱名和它们的成分的清单。现在,如果我的网页与数据库没有联系,我就不得不写一个查询语句。因为我对SQL不太熟,所以需要得到的DBA帮助。但是如果知道XSL,我就会摆脱这些麻烦。</span></p>
      <pre>
<span class="normal105">&lt;xsl:style sheet&gt;
   &lt;xsl:template match = "/"&gt;
      &lt;xsl:for-each select ="list/recipe"&gt;
         &lt;TABLE&gt;
         &lt;TR&gt;&lt;TD&gt;
         &lt;xsl:process select = "recipe_name"/&gt;&lt;/TD&gt;
         &lt;TD&gt;
            &lt;xsl:for-each select = "ingredients/item"&gt;
               &lt;BR&gt;&lt;xsl:process-children/&gt;&lt;/BR&gt;
            &lt;/xsl:for-each&gt;
         &lt;/TD&gt;&lt;/TR&gt;
         &lt;/TABLE&gt;
      &lt;/xsl:for-each&gt;
   &lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;
</span></pre>
      <p><span class="normal105">结果并不神奇。但是在table标记符中加些花样将没问题。显然,我在XML中存储了信息,但是我认为最好还是仔细看看。</span></p>
      <pre>
   <span class="normal105">&lt;xsl:template match = "/"&gt;
      &lt;xsl:for-each select ="list/recipe"&gt;
</span></pre>
      <p><span class="normal105">第一行很熟悉,只是简单地与模板相匹配。但是第二行却有些不同 - 在元素清单中出现的每个菜谱元素做每件事,直到&lt;/xsl:for-each&gt;标记符。然后我开始HTML表格,用&lt;xsl:process 
        select="recipe_name"/&gt;标记符把recipe_name元素中的内容输出到表格单元中。在关闭第一个表格单元后,事情开始变酷。下一行(&lt;xsl:for-each 
        select="ingredient/item"&gt;)开始一个附加的嵌套循环,允许我把全部ingredient输出到合适的显示信息中。样式表的其余部分应该很好理解。</span></p>
      <p><span class="normal105">但是等等,我知道你在想:“他说过酷了吗?什么这么酷?”</span></p>
      <p><span class="normal105">for-each函数是XSL的几个程序化的特征之一。还有if-then和选择函数。这些特征允许任何人都可以以任何能想到的方式(或至少是可行的方式)容易地操纵XML内容。如果你能实现这些特征,就很酷</span>。</p>
      <h4> <br>
        <u><a href="#top">&lt;&lt;Top</a></u> <br>
      </h4>
      <h3> <b> <a name="5"></a>第五节:从规范到实现</b></h3>
      <p><span class="normal105">既然你已经看到XML的一些功能,那么我想提出一个问题:通过把内容分离到组织良好和有效的XML文件中,XML对这些内容有哪些不能做的呢?如我前面显示的,数据可以被操纵然后放入你选择的版面中。或者数据可以被处理成可以被其它应用程序使用的形式。那么,还有其它的吗?</span></p>
      <p><span class="normal105">我们再一次面对扩展性的核心。一旦定义了数据,我们可以做任何想做的事。如果我们来到一个有能处理XML的字处理、电子表格和表现程序的时代,同一套数据几乎可以被用在任何用途上。</span></p>
      <p><span class="normal105">但是,哎!这依然是个梦。</span></p>
      <p><span class="normal105">我们只能希望浏览器能实现这些功能,但是我们没有理由乐观。即使Tim Bray,XML的教父,也说过对XSL的尝试只能在CSS标准完全实现之后才能实现。谁知道什么时候才能实现呢?而且这也不是唯一的问题。</span></p>
      <p><span class="normal105">XSL要排除另一个障碍。XSL规范有两个截然不同的部分。第一部分,是我们这里讨论的,处理数据结构。另一部分是一套用来应用样式的有格式的对象。这部分需要做大量工作。在我看来,现在需要很多人去做很多事。例如,应该有既适合屏幕又适合打印输出的命令。如果规范的制定者继续这种“无所不包”的尝试,此规范将最终很难实现,而且最终用户用起来也困难。但是现在,我们做不了什么 
        - 只能过我们自己快乐的小日子,同时盼望负责的同志们别把事情弄糟。</span></p>
      <p><span class="normal105">在这期间,做了甜梦吧!</span></p>
      <h3><br>
        <font color="#FF0000">第一节</font> <a href="#1">理解XSL</a><br>
        <font color="#FF0000">第二节</font> <a href="#2">攀登结果树</a><br>
        <font color="#FF0000">第三节</font> <a href="#3">一个XSL样式表</a><br>
        <font color="#FF0000">第四节</font> <a href="#4">选择XSL</a><br>
        <font color="#FF0000">第五节</font> <a href="#5">从规范到实现</a></h3>
      <hr size="1">
      <p align="center"><a href="../resource.htm" tppabs="http://www.xml.org.cn:8188/resource/resource.htm" target="_parent">[返回资源]</a><br>
        <font color="#FF0033" size="-1">本站点所刊文章版权,均归本站点所有。署名作者拥有其著作权。<br>
        未经</font><font color="#FF0033"><a href="mailto:xmlteam@egroups.com"><font color="#6666FF" size="-1">允许</font></a></font><font color="#FF0033" size="-1">,不得随意转载,违者必究!!</font></p>
      </td>
  </tr>
</table>
<p>&nbsp;</p><h2 align="center">&nbsp;</h2>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -