XML问题为啥有些XML文档有xs:而有些没有

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML问题为啥有些XML文档有xs:而有些没有相关的知识,希望对你有一定的参考价值。

xml中xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"和
schema xmlns="http://www.w3.org/2001/XMLSchema"有什么区别
<element name="书籍列表">
</element>

<xs:element name="书籍列表">
</xs:element>
有什么区别

首先说xs是命名空间,为了避免名字冲突而使用的。在这里,xs用的是W3C定义的Schema的标准命名空间。
其次,这是XML Schema文档,不是一般的XML文档。Schema文档里面的元素定义要使用Schema命名空间的标准。
xs:schema xmlns:xs="..." 给出了命名空间xs和它的来源,下面如果用到此命名空间中定义的内容,一定要有前缀xs,如xs:element。
schema xmlns="..." 给出了默认命名空间(即省略了前缀的命名空间)的来源,也就是如果文档中未加前缀的元素和属性都默认是在此命名空间定义的。在这种情况下,element就等于上面的xs:element.
参考技术A 你搜一下XML命名空间

XML编程总结——使用XPath对象查询xml文档

(七)使用XPath对象查询xml文档

 XPath,一种为查询 XML 文档而设计的查询语言。XPath 并不是 Java 语言,事实上 XPath 不是一种完整的编程语言。有很多东西用 XPath 表达不出来,甚至有些查询也无法表达。幸运的是,可以把 XPath 结合到 Java 程序中,这样就能发挥两者的优势了:Java 做 Java 所擅长的,XPath 做 XPath 所擅长的。Java 程序执行 XPath 查询所需要的应用程序编程接口(API)还因形形色色的 XPath 引擎而各不相同。Xalan 有一种 API,Saxon 使用另一种,其他引擎则使用其他的 API。Java 5 推出了 javax.xml.xpath 包,提供一个引擎和对象模型独立的 XPath 库。

在 Java 中计算 XPath 表达式时,第二个参数指定需要的返回类型。有五种可能,都在javax.xml.xpath.XPathConstants 类中命名了常量:

  • XPathConstants.NODESET
  • XPathConstants.BOOLEAN
  • XPathConstants.NUMBER
  • XPathConstants.STRING
  • XPathConstants.NODE

测试代码:

 1 public class XPathTest {
 2     /**
 3      * 使用不带命名空间的XPath查询
 4      * @throws Exception
 5      */
 6     @Test
 7     public void testRetrieveOndNode() throws Exception{
 8         //获得xml文档的内存模型
 9         DocumentBuilder builder = DocumentBuilderFactory
10         .newInstance().newDocumentBuilder();
11         Document document = builder.parse(new File("src/main/resource/books.xml"));
12         //创建XPathFactory对象
13         XPathFactory xPathFactory = XPathFactory.newInstance();
14         //获得XPath对象
15         XPath xPath = xPathFactory.newXPath();
16         //创建XPath表达式对象
17         XPathExpression nodeExpr = xPath.compile("//book[1]");
18         //执行XPath表达式,因为该表达式只能获得一个节点,所以用XPathConstants.NODE
19         Element element = (Element) nodeExpr.evaluate(document, XPathConstants.NODE);
20         NodeList nodes = element.getChildNodes();
21         for(int i=0;i<nodes.getLength();i++){
22             Node node = nodes.item(i);
23             //获得节点类型
24             short nodeType = node.getNodeType();
25             if(nodeType==Node.ELEMENT_NODE){
26                 //获得节点文本,getNodeValue()无法获得节点的文本
27                 String text=node.getTextContent();
28                 System.out.println(node.getNodeName()+"--"+text);
29             }
30         }
31     }
32 }

 

以上是关于XML问题为啥有些XML文档有xs:而有些没有的主要内容,如果未能解决你的问题,请参考以下文章

为啥有些 PHP 安装有 $_SERVER['SCRIPT_URI'] 而其他没有?

为啥有些函数会出现在 JSDoc 中而有些函数却没有?

为啥在 FLEX 3 中有些模块会加载而有些模块不会加载?

为啥有些网站分布在 www2、www3 子域,而有些网站却没有它来管理扩展?

XML编程总结——使用XPath对象查询xml文档

XML中DOM有些啥用,它具体有很多的对象和方法,他们有啥用,具体举个例子用在哪?!