XPATH杂记2

1. html标记告诉浏览器如何显示该信息,但标记没有告诉浏览器信息是什么.
 使用 XML,您可以给文档中的标记赋予某种含意。更重要的是,机器也容易处理这样的信息
2.XML 支持智能代码。因为可以使 XML 文档结构化以标识每个非常重要的信息片段(以及这些片段之间的关系),所以可以编写无需人工干
 预就能处理这些 XML 文档的代码。软件供应商花费了大量时间和金钱来构建 XML 开发工具这一事实意味着编写那样的代码是相对简单的过程。
3.XML 规范需要解析器拒绝任何没有遵守基本规则的 XML 文档。大多数 HTML 解析器接受随意的标记,它们会猜测文档作者的意图。
4/XML 文档中的属性必须有值,必须用引号括起,您可以使用单引号,也可以使用双引号,但要始终保持一致。
5.如果属性值包含单引号或双引号,则您可以使用另一种引号来括起该值(如 name="Doug's car"),
   或使用实体 " 代表双引号,使用 ' 代表单引号。实体是一个符号(如 "),
   XML 解析器会用其它文本代替该符号(如 ")。
6.建议使用 XML 声明,但它不是必需的。如果有的话,那么它一定是文档的第一样东西;standalone="no" 是缺省的
7.注释以 <!-- 开始,以 --> 结束。注释不能在结束部分以外包含双连字符(--);
8.处理指令:处理指令是为使用一段特殊代码而设计的标记。它的含义有工具自己确定(杨觉得是这样的)
9. 实体:<!ENTITY dw "developerWorks">  示例为文档定义了一个实体。
         无论 XML 处理器在何处找到字符串 &dw;,它都会用字符串 developerWorks 代替该实体; 当然XML还有几个预定义的实体
10. 如何分辨某个特定的 <title> 元素指的是人、书籍还是一份财产呢?可以使用名称空间。
   要使用名称空间,您要定义一个名称空间前缀,然后将它映射至一个特殊字符串。然后给元素加上这个名称空间前缀(当然上一层上
   使用由于继承的功能,也能达到在元素上用这个名称空间前缀的目的)

   最后要指出的是:名称空间定义中的字符串仅仅是字符串。对,这些字符串看似 URL,其实不是。
   您可以定义 xmlns:addr="mike",那也是有效的。名称空间唯一的重要性在于其唯一性;
   这就是为什么大多数名称空间定义看起来象 URL 的原因。


   <?xml version="1.0" encoding="UTF-8"?>
<orders xmlns="http://www.nicholaschase.com/orderSystem.html">
     <order>
      <customerid limit="1000">12341<customerid>
...
</orders>
没有指定名称空间的任何元素都在默认名称空间 http://www.nicholaschase.com/orderSystem.html 中。
实际的 URI 本身并没有表示任何意义。信息可能在也可能没有在该地址,重要的是它必须是唯一的


11.模式可以定义您能在 DTD 中使用的所有文档结构,它还可以定义数据类型和比 DTD 更复杂的规则.
    DTD 定义可以在 XML 文档中出现的元素、这些元素出现的次序、它们可以如何相互嵌套等等

12.
<!ELEMENT address (name, street, city, state, postal-code)>
<!ELEMENT name (title? first-name, last-name)>
<!ELEMENT title (#PCDATA)>
<address> 元素包含一个 <name>、一个 <street>、一个 <city>、一个 <state> 和一个 <postal-code>。所有这些元素必须出现,
而且必须以这个顺序出现。
<name> 元素包含一个可选的 <title> 元素(问号表示 title 这个元素是可选的),后面跟有一个 <first-name> 和一个 <last-name> 元素。
所有其它包含文本的元素。(#PCDATA 代表已解析字符数据;不能在这些元素中包含另一个元素。)

 

XML Schema例子:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="memories">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element name="memory" type="memoryType"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>

<xsd:complexType name="memoryType">
  <xsd:sequence>
    <xsd:element name="subdate" type="xsd:date"/>
    <xsd:element name="donor" type="xsd:string"/>
    <xsd:element name="subject" type="xsd:string"/>
  <xsd:attribute name="tapeid" type="idNumber" />
</xsd:complexType>
</xsd:schema>

 

 

13.
DTD 语法不同于普通的 XML 语法,相反,XML Schema 文档本身就是 XML


14.
(XSLT))是一个描述如何将 XML 文档转换成别的东西的.
您使用 XSLT 样式表中的 XPath 来描述您希望转换 XML 文档的哪个部分。XPath 也用在其它 XML 标准中,
这就是为什么它是独立于 XSLT 的标准的原因

15.
XLink(XML 链接语言)定义将不同资源链接在一起的各种方法。
您可以进行正常的点对点链接(就象用 HTML <a> 元素);
XPointer(XML 指针语言)使用 XPath 作为引用其它资源的方法

16.
有两个处理 XML 文档安全性的重要标准。一个是 XML 数字签名(XML Digital Signature)标准,
您可以用数字签名来验证一个特定文件自签名后没有被修改过;
另一个标准用于加密 XML 文档,落入他人之手也不用害怕.
我可以对一个重要的 XML 文档进行数字签名,生成一个包含 XML 文档本身的签名。然后我可以加密该文档

17.
SOAP-----SOAP 定义一个 XML 文档格式,该格式描述如何调用一段远程代码的方法,应用程序通过网络将该 XML 文档发送给那段代码。
代码接收 XML 文档、解释它、调用我请求的方法,然后发回一个描述结果的 XML 文档.
UDDI------统一描述、发现和集成(Universal Description, Discovery, and Integration)协议向 Web 服务注册中心定义 SOAP 接口。

 

 

 

 

 

 

 

1.
XPath 中的字符串使用引号(' 或 ")包围起来。
XPath 提供的数值运算符有:+(加)、-(减)、*(乘)、div(除)和 mod(整除求余)。
提示:减法(-)运算符的前面必须有空格,因为 XML 允许字符串中包含“-”字符。
可以用表达式 position()=last() 测试处理的是否是集合中的最后一个节点,
count(//item) 返回 item 元素的个数,即 7。

2.
<xsl:template match="list">
     <h1>Auctions ending in the hour</h1>
     <table border="1">
       <th>Time remaining</th>
       <th>ID</th>
       <th>Description</th>
       <th>Seller</th>
       <th>Current Price</th>
       <th>Bid</th>
       <th>Type</th>
       <th>Private</th>

<!--下面主要放置过滤某些行-->
       <xsl:apply-templates select="item[endOfAuction div 60 &lt; 1]"/>
     </table>
   </xsl:template>

   <xsl:template match="item">
     <tr>
<!--用哪些变量的值来填充-->
      <td><xsl:value-of select="endOfAuction"/> min</td>
      <td><xsl:value-of select="@id"/></td>
      <td><xsl:value-of select="description"/></td>
      <td><xsl:value-of select="sellerId"/></td>
      <td><xsl:value-of select="currentPrice/@currency"/><xsl:value-of select="currentPrice"/></td>
      <td><xsl:value-of select="bidIncrement"/></td>
      <td><xsl:value-of select="@type"/></td>
      <td><xsl:value-of select="@private"/></td>
     </tr>
   </xsl:template>
3.
lang("en") 对于 my.xml 树中的任何节点都返回 false,因为没有指定 xml:lang 属性。
floor()——返回不大于数字参数的最大整数数字。比如,floor(2.75) 返回 2。
ceiling()——返回不小于数字参数的最小整数数字。比如,ceiling(2.75) 返回 3。
round()——返回和数字参数最接近的整数数字。比如,round(2.75) 返回 3。

4.
W3C 已经定义了两个系列的样式表标准。第一个是在 HTML 中广泛使用的 CSS(级联样式表),
另外一个就是更强大的样式表语言 XSL(可扩展样式表语言).

在 XSL 的开发过程中(这在 DSSSL 中已有所预示),发现在准备 XML 文档以备显示的过程中执行的任务可以分成两个阶段:
转换和格式化。转换是将一个 XML 文档(或其内存中的表示法)转换成另一个 XML 文档的过程。格式是将已转换的树状结构
转换成两维图形表示法或可能是一维音频流的过程。XSLT 是为控制第一阶段“转换”而开发的语言。
第二阶段“格式化”的开发工作还是进行中.但实际上,大多数人现在使用 XSL 将 XML 文档转换成 HTML,并使用 HTML 浏览器作为格式化引擎

5.还有更多需要注意的地方。现在给出的表达式仅仅返回实际的元素。可能还要获得这些节点的值。如果需要元素的值(假设元素包含文本数据),需要使用 text() 函数。要获

得第一个 h1 的文本,应使用 body/h1/text() ;可以使用 head/meta/@http-equiv 返回 meta 元素 http-equiv 属性的值;
可以使用 /html/body/* 选择 body 元素的所有直接子元素。也可用 /html/head/meta/@* 选择 meta 标记的所有属性

6.
后代选择器用双斜线 // 表示。使用它告诉 XPath 选择所有指定的节点,无论嵌套得多深.比如 /html/body//table XPath 选择嵌套在 XHTML 的 body 元素中的所有 table 元素

,不论直接嵌套在 body 中(如 /html/body/table ),还是嵌套了多层(如 /html/body/table/tr/td/table )。这种情况下,嵌套的 table 和顶层 table 同时被选中。

当与属性结合使用的时候就变得很有趣了(使用 @)。比方说,假设要选择具有 id 属性的所有元素。可使用 //@id ,首先跳回根元素然后选择文档中的所有 id 属性。但是实际

上要访问的是元素而不是属性,因此需要从属性上移一层到包含这些属性的元素:

//@id/..

 //@class[.="greentea"] 选择值为 greentea 的所有 class 属性。然后再移动到这些属性所在的元素:

//@class[.="greentea"]/..
7.
得到了出生年份(可能是 1976 或者 1945),然后要减去 1900:

(/people/person/birthdate/@year) - 1900

8.
ormalize-space(string(//p))

   1. //p 选择文档中所有的 p 元素,无论其位于何处。
   2. string(//p) 获取这些元素的内容组成一个大字符串。但是字符串中包含很多无用的空白,因此还要进一步处理。
   3. normalize-space(string(//p)) 规范化内容中的空白字符,得到您希望的文本。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值