Java程序员的10道常见的XML面试问答题(XML术语详解)
xml面试问题包括用于转换xml文件的xslt技术,xpath,xquery等各种xml技术和xml基础知识,比如dtd或者schema。
本文将看到10道常见的xml面试问答题。这些问题大部分在java面试中会问到,同时在c,c++,scala或其他语言的编程面试中同样很有用处。xml并不依赖于其他编程语言,同sql一样是编程人员所需要的技能之一,因此在任何技术工作面试之前准备一些xml问题是很有意义的。
xml面试问答
下面是我列出的关于xml技术经常会问到的面试题。这些问题并不很难但涵盖了xml技术的一些重要领域,比如dtd,xml schema,xslt转换,xpath检索,xml绑定,xml解析器以及xml的基本知识,比如命名空间,校验,属性,元素等。
问题1:xml是什么?
答:xml即可扩展标记语言(extensible markup language),你可以根据自己的需要扩展xml。xml中可以轻松定义<books>, <orders>等自定义标签,而在html等其他标记语言中必须使用预定义的标签,比如<p>,而不能使用用户定义的标签。使用dtd和xml schema标准化xml结构。xml主要用于从一个系统到另一系统的数据传输,比如企业级应用的客户端与服务端。
问题2:dtd与xml schema有什么区别?
答:dtd与xml schema有以下区别:dtd不使用xml编写而xml schema本身就是xml文件,这意味着xml解析器等已有的xml工具可以用来处理xml schema。而且xml schema 是设计于dtd之后的,它提供了更多的类型来映射xml文件不同的数据类型。dtd即文档类型描述(document type definition)是定义xml文件结构的传统方式。
问题3:xpath是什么?
答:xpath是用于从xml文档检索元素的xml技术。xml文档是结构化的,因此xpath可以从xml文件定位和检索元素、属性或值。从数据检索方面来说,xpath与sql很相似,但是它有自己的语法和规则。了解更多查看怎样使用xpath从xml文档中检索数据。
问题4:xslt是什么?
答:xslt也是常用的xml技术,用于将一个xml文件转换为另一种xml,html或者其他的格式。xslt为转换xml文件详细定义了自己的语法,函数和操作符。通常由xslt引擎完成转换,xslt引擎读取xslt语法编写的xml样式表或者xsl文件的指令。xslt大量使用递归来执行转换。一个常见xslt使用就是将xml文件中的数据作为html页面显示。xslt也可以很方便地把一种xml文件转换为另一种xml文档。
问题5:什么是xml元素和属性
答:最好举个例子来解释。下面是简单的xml片断。
<order id="123">
<symbol>6758.t</symbol>
<price>2300</price>
<order>
<orders>
例子中id是元素的一个属性,其他元素都没有属性。
问题6:什么是格式良好的xml
答:这个问题经常在电话面试中出现。一个格式良好的xml意味着该xml文档语法上是正确的,比如它有一个根元素,所有的开放标签合适地闭合,属性值必须加引号等等。如果一个xml不是格式良好的,那么它可能不能被各种xml解析器正确地处理和解析。
问题7:xml命名空间是什么?它为什么很重要?
答:xml命名空间与java的package类似,用来避免不同来源名称相同的标签发生冲突。xml命名空间在xml文档顶部使用xmlns属性定义,语法为xmlns:prefix='uri'。prefix与xml文档中实际标签一起使用。下面例子为xml命名空间的使用。
<inst:phone>
<inst:number>837363223</inst:number>
</inst:phone>
</root>
问题8:dom和sax解析器有什么区别
答:这又是一道常见面试题,不仅出现在xml面试题中,在java面试中也会问到。dom和sax解析器的主要区别在于它们解析xml文档的方式。使用dom解析时,xml文档以树形结构的形式加载到内存中,而sax是事件驱动的解析器。这个问题更详细的回答查看dom和sax解析器之间的区别。
问题9:xml cdata是什么
答:这道题很简单也很重要,但很多编程人员对它的了解并不深。cdata是指字符数据,它有特殊的指令被xml解析器解析。xml解析器解析xml文档中所有的文本,比如<name>this is name of person</name>,标签的值也会被解析,因为标签值也可能包含xml标签,比如<name><firstname>first name</firstname></name>。cdata部分不会被xml解析器解析。cdata部分以“
问题10:java的xml数据绑定是什么
答:java的xml绑定指从xml文件中创建类和对象,使用java编程语言修改xml文档。xml绑定的java api,jaxb提供了绑定xml文档和java对象的便利方式。另一个可选的xml绑定方法是使用开源库,比如xml beans。java中xml绑定的一个最大的优势就是利用java编程能力创建和修改xml文档。
以上的xml面试问答题收集自很多编程人员,但它们对于使用xml技术的每个人都是有用的。由于xml具有平*立的特性,xpath,xslt,xquery等xml技术越来越重要,xml广泛用于跨平台数据传输。尽管xml有冗余和文档体积大等缺点,但它在web服务以及带宽、速率作为次要考虑因素的系统间数据传输起很大作用。