??xml version="1.0" encoding="utf-8" standalone="yes"?>久热99视频在线观看,一本大道久久a久久综合,9999精品视频http://www.aygfsteel.com/honeybee/category/27253.htmlzh-cnTue, 20 Nov 2007 00:17:14 GMTTue, 20 Nov 2007 00:17:14 GMT60XPath入门学习(fn)http://www.aygfsteel.com/honeybee/articles/161733.htmlsunsunMon, 19 Nov 2007 14:24:00 GMThttp://www.aygfsteel.com/honeybee/articles/161733.htmlhttp://www.aygfsteel.com/honeybee/comments/161733.htmlhttp://www.aygfsteel.com/honeybee/articles/161733.html#Feedback0http://www.aygfsteel.com/honeybee/comments/commentRss/161733.htmlhttp://www.aygfsteel.com/honeybee/services/trackbacks/161733.html 

q?/span>XPathQ?/span>XSLTQ?/span>XLink?/span>XPointer

XSLT?span lang="EN-US">XLink ?span lang="EN-US"> XPointer 都是 W3C 标准?span lang="EN-US">XSLT ?span lang="EN-US"> XPathQ以?span lang="EN-US"> XSL Formatting Object (XSL-FO) 构成?span lang="EN-US"> W3C eXtensible Stylesheet Language (XSL) pd规范?span lang="EN-US">

XSLT?span lang="EN-US">XLink ?span lang="EN-US"> XPointer 都是 W3C 标准?span lang="EN-US">XSLT ?span lang="EN-US"> XPathQ以?span lang="EN-US"> XSL Formatting Object (XSL-FO) 构成?span lang="EN-US"> W3C eXtensible Stylesheet Language (XSL) pd规范?span lang="EN-US">

表示Q?/span>XSLT q泛使用 XPath q行匚w―?/span>也就是,试节点是否匚w指定模式?span lang="EN-US">XSLT 指定?span lang="EN-US"> XPath 使用的上下文。如果想使用 XSLTQ就应该?jin)?span lang="EN-US"> XPath。在 关于本教E中使用的例?中,(zhn)看C(jin) AuctionItemSummary-Base.xsl 样式表包含了(jin) XPath 表达式?span lang="EN-US">XSLT 使用q些 XPath 表达式,在源文中查扑֌配条件的元素Q也使用它们来显C结果文中的信息?span lang="EN-US">XSLT 使用 XPath 函数来执行算术和字符串操U|作?span lang="EN-US">

链接Q?/span>XLink ?span lang="EN-US"> XML 中提供了(jin) HTML 链接概늚一般化?span lang="EN-US">XLink 插入 XML 文的元素提供了(jin)某种语法Q以便把资源链接在一P?qing)描q它们的关系。这些链接可以是单向的,比如 HTML 的超链接Q或者更加复杂的?span lang="EN-US">XLink 使用 XPointer 来查找资源?span lang="EN-US">

指向Q?/span>XPointer ?span lang="EN-US"> XPath 的扩展,提供?jin)?span lang="EN-US"> XML 文?qing)其内部的寻址?span lang="EN-US">XPointer 一般化?span lang="EN-US"> XPath 节点的概念,使用?span lang="EN-US"> XPointer 位置、点和范围的概念?span lang="EN-US">XPointer 也指定了(jin)?span lang="EN-US"> XPath 计算q程中用的上下文,q提供了(jin)?span lang="EN-US"> XPath 中不可用的其他函数?/p>

一句话结: 
    XML
Q其他技术的基础Q数据)(j)?span lang="EN-US"> 
    XML SchemaQ数据格式规则?span lang="EN-US"> 
    XSLTQ数据表C?span lang="EN-US">/匚w?span lang="EN-US"> 
    XLinkQ链接?span lang="EN-US"> 
    XPointer and XPathQ寻址?/h3>

    

XML语法

.位置路径
1.
路径
位置路径?span lang="EN-US"> XPath 中最有用也是应用最q泛的特性。位|\径是 XPath 表达式的特化Q参?表达式)(j)。位|\径标识了(jin)和上下文有关的一l?span lang="EN-US"> XPath 节点?span lang="EN-US">XPath 定义?jin)两U语法:(x)化语法和非简化语法?span lang="EN-US">

位置路径有相对和l对两种cd?span lang="EN-US">
相对位置路径׃?span lang="EN-US"> / 分隔的定位步序列l成。比如:(x)
list/item[currentPrice<20.0]

l对位置路径?span lang="EN-US"> / 和后面可选的相对位置路径l成Q其?span lang="EN-US"> / 表示根节炏V?span lang="EN-US">
/list/item[currentPrice<20.0]
XPath 表达?span lang="EN-US"> /list q定了(jin)一个单独的节点――list 根元素?span lang="EN-US">

The XPath 表达?span lang="EN-US"> /list/item 定?jin)所?span lang="EN-US"> item 元素?span lang="EN-US">

XPath 表达式可以引用属性及(qing) XML 文中的元素。当引用属性时Q?span lang="EN-US"> @ 字符。例如,下面?span lang="EN-US"> XPath 表达式确定了(jin) currentPrice 元素Q其 currency 属性包含?span lang="EN-US"> EURQ?span lang="EN-US">

/list/item/currentPrice[@currency="EUR"]


@
用于引用属性。比如,位置路径 @currency 标识?span lang="EN-US"> currency 属性?span lang="EN-US">list/item[@private] 标识带有 private 属性的 item 元素Q意?span lang="EN-US"> AuctionItemList.xml 中的所?span lang="EN-US"> item 元素?span lang="EN-US">

* 用于引用上下文结点的所有子元素?span lang="EN-US">@* 用于引用上下文结点的所有属性?span lang="EN-US">

[] 也可用于引用有序序列中的特定元素。比如,list/item[2] 代表W二?span lang="EN-US"> item 元素。实际上 [] 是一个谓词(参见谓词Q?span lang="EN-US">

// 用于引用上下文节点的所有孩子。比如,//item 表示所有的 item 元素Q?span lang="EN-US"> //list/item 引用?span lang="EN-US"> list 为父元素的所?span lang="EN-US"> item 元素Q在该例中即所有的 item 元素Q?span lang="EN-US">

. 用于引用上下文节点自w。比如,. 选择上下文节点,?span lang="EN-US"> .//item 代表作ؓ(f)上下文节点孩子的所?span lang="EN-US"> item 元素?span lang="EN-US">

.. 用于引用上下文节点的父节炏V比如,在第一?span lang="EN-US">bidIncrement 元素的上下文中, ../item pC第一?span lang="EN-US"> item 元素?span lang="EN-US">

2.谓词
谓词在位|\径中用于{选当前节炚w。谓词包含一?span lang="EN-US"> boolean 表达式(或者很Ҏ(gu)转化?span lang="EN-US"> boolean 值的表达式)(j)。用q个布尔表达式测试当前节炚w的每个成员,如果表达式成立则保留该成员否则丢弃。谓词放在方括号[]中。比如下面的位置路径Q?span lang="EN-US">

list/item/currentPrice[@currency="EUR"]
在计过E中Q?span lang="EN-US">AuctionItemList.xml 中所有的 currentPrice 元素都放在选择的节炚w中。然后计谓?span lang="EN-US"> @currency="EUR"Q货币中不包含?span lang="EN-US"> EUR ?span lang="EN-US"> currentPrice 元素被抛弃?span lang="EN-US">
谓词也可以用关p运符 >?span lang="EN-US"><?span lang="EN-US">>=?span lang="EN-US"><= ?span lang="EN-US"> !=?span lang="EN-US">

?span lang="EN-US">.表达?/span>
1.
布尔表达?span lang="EN-US">
XML 文中包?span lang="EN-US"> XPath 表达式时Q必遵?span lang="EN-US"> XML 1.0 的结构良好性规则,M < ?span lang="EN-US"> <= 字符必须分别?span lang="EN-US"> &lt; ?span lang="EN-US"> &lt;= 表示。比如,XPath 表达?span lang="EN-US"> bidIncrement < 5 ?span lang="EN-US"> XPointer 中是合法的,但是?span lang="EN-US"> XSLT 文档中必d?span lang="EN-US"> bidIncrement &lt; 5?span lang="EN-US">

2.数字
XPath
数字?span lang="EN-US"> 64 位双_ֺ点数?span lang="EN-US">XPath 数字包括非数?span lang="EN-US">” NaN 倹{正无穷和负无穷、正零和负零?span lang="EN-US">
XPath 提供的数D符有:(x)+Q加Q?span lang="EN-US">-Q减Q?span lang="EN-US">*Q乘Q?span lang="EN-US">divQ除Q和 modQ整除求余)(j)?span lang="EN-US">
提示Q减法(-Q运符的前面必LI格Q因?span lang="EN-US"> XML 允许字符串中包含“-”字符?span lang="EN-US">
下面?span lang="EN-US"> XPath 数字表达式的一些例子:(x)
7 + 3
q回 10
7 - 3
q回 4
7 * 3
q回 21
7 div 3
q回 2.3333333333333335
7 mod 3
q回 1

3.字符?span lang="EN-US">
XPath 中的字符串用引P' ?span lang="EN-US"> "Q包围v来。如?span lang="EN-US"> XML 文中的 XPath 字符串包含引P可以选择Q?span lang="EN-US">
分别使用 &apos; ?span lang="EN-US"> &quot; 引v来。比如,description = 'New 256m &quot;USB&quot; MP3 player'

?span lang="EN-US">.函数?/span>
XPath
定义?jin)一l函敎ͼUCؓ(f)核心(j)函数库。每个函C三个斚w来定义:(x)
(1)
函数?span lang="EN-US">
(2)q回cdQ必ȝQ不能?span lang="EN-US"> voidQ?span lang="EN-US">
(3)参数cdQ可以没有参数或者带有多个参敎ͼ参数可以是必需的也可以是可选的Q?span lang="EN-US">
函数被分成四c,以下分别介绍Q?span lang="EN-US">
1.节点集函?span lang="EN-US">
节点集函数提供关于一l节点(一个或多个节点Q的信息。常用的节点集函数有Q?span lang="EN-US">
last()―?/span>q回一个称Z下文大小的数字,即给定上下文中的节点敎ͼ不同于最后一个节炏V?span lang="EN-US">
position()―?/span>q回一个称Z下文位置的数字,集当前节点在l上下文节点集(列表Q中的位|。比如,可以用表辑ּ position()=last() 试处理的是否是集合中的最后一个节炏V?span lang="EN-US">
count(node-set)―?/span>q回实参节点集中的节Ҏ(gu)。比如,?span lang="EN-US"> AuctionItemList.xml 文档的上下文中,count(//item) q回 item 元素的个敎ͼ?span lang="EN-US"> 7?span lang="EN-US">
id(object)―?/span>q回一个节炚wQ根据在 DTD 中声明ؓ(f) ID cd的唯一标识W选择元素。因为在 AuctionItemList.xml 中没有?DTDQ这个例子中得到的节炚wLI集?span lang="EN-US">Id("ItemId0001") q回一个空节点集?span lang="EN-US">
XPath q定义了(jin)和节点名?qing)名U空间有关的其他三个函数Q?span lang="EN-US">
local-name()
namespace-uri()
name()

2.字符串函?span lang="EN-US">
通过字符串函数?zhn)可以操纵字符丌Ӏ常用的字符串函数有Q?span lang="EN-US">
string()―?/span>把参数对象或者上下文l点转化成字W串。合法的参数包括节点集、数字、布?yu)(dng)值或者其他Q何类?span lang="EN-US">―?/span>但是对于最后一U情况{换的l果不可预料。徏议?span lang="EN-US"> XSLT 函数 format-number 把数字{化成字符Ԍ或者?span lang="EN-US"> XSLT 元素 xsl:number 提供l用戗?span lang="EN-US">
concat()―?/span>以两个或更多字符串作为参数ƈq回q些字符串的q接。比如,concat("Original ","recording ","Blue Train LP record") q回 "Original recording Blue Train LP record"?span lang="EN-US">
starts-with()―?/span>如果W一个字W串参数以第二个字符串参数开始则q回 trueQ否则返?span lang="EN-US"> false。比如,starts-with("Miles Smiles album, CD", "Miles") q回 true?span lang="EN-US">
contains()―?/span>如果W一个字W串参数包含W二个字W串参数则返?span lang="EN-US"> trueQ否则返?span lang="EN-US"> false。比如,contains("Miles Smiles album, CD", "album") q回 true?span lang="EN-US">
其他?span lang="EN-US"> XPath 字符串函数包括:(x)substring()?span lang="EN-US">substring-before()?span lang="EN-US">substring-after()?span lang="EN-US">string-length()?span lang="EN-US">normalize-space() ?span lang="EN-US"> translate()?span lang="EN-US">

3.布尔函数
布尔函数用于把一个对象或字符串{化成 true 或?span lang="EN-US"> falseQ或者直接获得真或假的倹{布?yu)(dng)函数有Q?span lang="EN-US">
boolean()―?/span>Ҏ(gu)以下规则q回作ؓ(f)参数传递的对象转换成布?yu)(dng)值的l果Q不同于 0 或?span lang="EN-US"> NaN 的数字ؓ(f) trueQ非I的节点集或者字W串?span lang="EN-US"> true。其他类型的对象已不可预料的方式转换?span lang="EN-US">
not()―?/span>如果作ؓ(f)参数传递的布尔gؓ(f) false q回 trueQ否则返?span lang="EN-US"> false?span lang="EN-US">
true() ?span lang="EN-US"> false()―?/span>分别q回 true ?span lang="EN-US"> false。这些函数很有用Q因为在 XPath ?span lang="EN-US"> true ?span lang="EN-US"> false 被看作是普通的字符串而不是真和假的倹{?span lang="EN-US">
lang()―?/span>如果上下文节点的语言和字W串参数中指定的语言相同Q或者是它的一U子语言q回 trueQ否则返?span lang="EN-US"> false?span lang="EN-US">

4.数字函数
数字函数?span lang="EN-US"> XPath 的数值函敎ͼ都返回数字。其中包括:(x)
number()―?/span>把可选的对象参数Q如果没有指定参数则使用上下文节点)(j)转化成数字,转换的规则如下:(x)
 
布尔?span lang="EN-US"> true
转换?span lang="EN-US">1Q?span lang="EN-US">false 转换?span lang="EN-US"> 0?span lang="EN-US">
 字符串{换成合理的数字?span lang="EN-US">
 节点集首先{换成字符Ԍ然后把这个字W串转换成数字?span lang="EN-US">
 其他cd对象以不可预料的方式转换。比如,number("250") q回 250Q?span lang="EN-US"> number("miles1965") q回 NaN?span lang="EN-US">
sum()―?/span>对节炚w参数中的所有节点应?span lang="EN-US"> number() 函数后返回它们的和?span lang="EN-US">
floor()―?/span>q回不大于数字参数的最大整数数字。比如,floor(2.75) q回 2?span lang="EN-US">
ceiling()―?/span>q回不小于数字参数的最整数数字。比如,ceiling(2.75) q回 3?span lang="EN-US">
round()―?/span>q回和数字参数最接近的整数数字。比如,round(2.75) q回 3?

 

XML Path Language (XPath)
Version 1.0

W3C Recommendation 16 November 1999

This version:
http://www.w3.org/TR/1999/REC-xpath-19991116
(available in XML or HTML)
Latest version:
http://www.w3.org/TR/xpath
Previous versions:
http://www.w3.org/TR/1999/PR-xpath-19991008
http://www.w3.org/1999/08/WD-xpath-19990813
http://www.w3.org/1999/07/WD-xpath-19990709
http://www.w3.org/TR/1999/WD-xslt-19990421
Editors:
James Clark <jjc@jclark.com>
Steve DeRose (Inso Corp. and Brown University) <Steven_DeRose@Brown.edu>

 

 



sun 2007-11-19 22:24 发表评论
]]>
xml解析http://www.aygfsteel.com/honeybee/articles/161163.htmlsunsunFri, 16 Nov 2007 17:27:00 GMThttp://www.aygfsteel.com/honeybee/articles/161163.htmlhttp://www.aygfsteel.com/honeybee/comments/161163.htmlhttp://www.aygfsteel.com/honeybee/articles/161163.html#Feedback0http://www.aygfsteel.com/honeybee/comments/commentRss/161163.htmlhttp://www.aygfsteel.com/honeybee/services/trackbacks/161163.htmlhttp://www.youtube.com/api2_rest?method=youtube.videos.list_by_tag&dev_id=s2gNEM-7qoU&tag=New+York
<NodeSet>
        <Node>            
            <title>
            <summary>
        <Node>
   <title>
            <summary>
        <Node>
   <title>
            <summary>
          ......
        <Node>
   <title>
            <summary>
</NodeSet>

解析一般方?Q?br /> DocumentBuilder builder =
    DocumentBuilderFactory.newInstance().newDocumentBuilder();
    
   Document hostDoc =builder.parse(
     new InputSource(new StringReader("<div />")));
   Node hostRoot = hostDoc.getDocumentElement();   
Document document= builder.parse(baseURL);   // baseURL在上面我们已l给出,document用于成ؓ(f)下面的被解析对象
    
    XPath xpath = XPathFactory.newInstance().newXPath();
    String expression = "/NodeSet/Node/";    //首先解析NodeSet/NodeQ可以发现本例有多个Node
    
    NodeList recordNodes = (NodeList) xpath.evaluate(
      expression, document, XPathConstants.NODESET);     //׃本例有多个NodeQ因此用NodeList存储所有的NodeQevaluate函数表示documentQ及(qing)?xml文gQ其url通过parse函数得到Q上下文的expressionQ?#8220;Node”Q存储在一PNODESETQ?br />                  
             for(int i=0;i<recordNodes.getLength();i++){      //下面对于每一个Node元素q行解析
             
              String template = "<p><b><value/></b>:<value/></p>";   //templatel出?jin)解析模?br />               Document templateDoc = builder.parse(new InputSource(new StringReader(template)));   //对templateDoc解析成模板的形式QtemplateDoc解析对象
              
              String[] elementValues = {"title","summary"};   //即Node的子元素title,summary
              
              expression="http://value";   //注意value与模板中的项对应
              NodeList templateNodes = (NodeList) xpath.evaluate(expression, templateDoc, XPathConstants.NODESET); //下面解析Node的子元素Q即title,summaryQ,׃子元素不唯一Q故以NodeList形式存储Qevaluate函数表示templateDocQ及(qing)形如"<p><b><value/></b>:<value/></p>"的被解析对象Q上下文的expressionQ?#8220;value”Q存储在一PNODESETQ?br />
              for(int j=0;j<templateNodes.getLength();j++){     //下面对于每一个Node元素的子元素titleQsummaryq行解析
              
               Node thistemplateNode = templateNodes.item(j);       //item(0)表示title, item(1)表示summary
               Node parent = thistemplateNode.getParentNode();
               
               if( (Boolean) xpath.evaluate(elementValues[j], recordNodes.item(i), XPathConstants.BOOLEAN)){//recordNodes对应?lt;Node>QelementValues对应?lt;title>此时j=0Q及(qing)<summary> 此时j=1Q本条g判断对于Node“i”是否存在elementValues[j]Q默认true?br />                 Node replaceNode =(Node) xpath.evaluate(elementValues[j], recordNodes.item(i), XPathConstants.NODE);
                String replacement = replaceNode.getTextContent();
                Node replacementNode = templateDoc.createTextNode(replacement);
                parent.replaceChild(replacementNode, thistemplateNode);
               }               
              }
              Node importedNode = hostDoc.importNode(templateDoc.getDocumentElement(), true);
              hostRoot.appendChild(importedNode);
              hostRoot.appendChild(hostDoc.createTextNode("\n"));
             }
   }


ȝhQ解析xml的一般步骤:(x)
从解析外部开始,逐层深入解析内部?br /> 先得到NodeListQ后得到Node?

sun 2007-11-17 01:27 发表评论
]]>
վ֩ģ壺 | | °| Ĵʡ| | ɳ| ҵ| Ѯ| Ӣɳ| ˮ| Ž| ÷| | | | | ӱʡ| | ݶ| | | | Ž| | Ӧ| е| | | | | | ԭ| ɳ| | Ϫ| | | | | ӻ| |