CN109597917B - 将XML Schema文档转换为XSL文档的方法 - Google Patents

将XML Schema文档转换为XSL文档的方法 Download PDF

Info

Publication number
CN109597917B
CN109597917B CN201811208124.3A CN201811208124A CN109597917B CN 109597917 B CN109597917 B CN 109597917B CN 201811208124 A CN201811208124 A CN 201811208124A CN 109597917 B CN109597917 B CN 109597917B
Authority
CN
China
Prior art keywords
node
document
name
xsl
elements
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811208124.3A
Other languages
English (en)
Other versions
CN109597917A (zh
Inventor
马永起
张民
彭小静
蒙立荣
谢家俊
程铮
吴家菊
朱行林
刘振吉
成勋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Zhongrui Information Technology Co ltd
COMPUTER APPLICATION RESEARCH INST CHINA ACADEMY OF ENGINEERING PHYSICS
Original Assignee
Sichuan Zhongrui Information Technology Co ltd
COMPUTER APPLICATION RESEARCH INST CHINA ACADEMY OF ENGINEERING PHYSICS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sichuan Zhongrui Information Technology Co ltd, COMPUTER APPLICATION RESEARCH INST CHINA ACADEMY OF ENGINEERING PHYSICS filed Critical Sichuan Zhongrui Information Technology Co ltd
Priority to CN201811208124.3A priority Critical patent/CN109597917B/zh
Publication of CN109597917A publication Critical patent/CN109597917A/zh
Application granted granted Critical
Publication of CN109597917B publication Critical patent/CN109597917B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种将XML Schema文档转换为XSL文档的方法,包括以下步骤:先确定XML Schema标准定义中需要关注的元素,然后确定XML Schema标准定义的元素和XSL标准定义的元素之间的映射关系;对XML Schema文档进行解析,获取schema标准中需要关注的第一个元素,并添加到XSL文档中;按照深度优先原则依次对XML Schema文档中的<schema>的子节点中的<element>元素进行解析,查找XML Schema中需要关注的元素并添加到XSL文档中,直到完成整个XML Schema文档的转换。本发明降低了XSL文档编辑的复杂度,并提高编辑的效率,并且使得XML文档易于阅读。

Description

将XML Schema文档转换为XSL文档的方法
技术领域
本发明涉及一种计算机文档转换方法,尤其涉及一种将XML Schema文档转换为XSL文档的方法。
背景技术
XML是一种数据描述和交换的通用格式,得到了广泛的应用,具有通用性和可交换性。XML Schema用来描述XML文档结构,对XML文档进行约束和验证,其本身也是使用XML文档结构,是基于XML的DTD替代者。XML schema定义了XML文档的如下参数:可出现在XML文档中的元素、属性;哪个元素是子元素;子元素出现的次序、子元素的数目;元素是否为空、是否可包含文本;元素和属性的数据类型;元素和属性的默认值以及固定值。
XSL(eXtensible Stylesheet Language)是可扩展样式表语言,是一种用于以可读格式呈现XML数据的语言。通俗的讲就是XML文件可以通过引用XSL样式表呈现不同格式,即XSL可以将XML文档转化为XHTML/HTML文档或者是其他XML文档。
目前,通常采用将XML schema文档手动编辑为XSL文档或者用商业软件将XMLschema文档自动生成XSL文档的方式实现将XML Schema文档转换为XSL文档的目的。但前者复杂度高,费时费力;后者通常需要大量的修改才能应用于XML中。并且这两种方式都存在一个严重的问题:一旦对XML文档进行了修改,都需要对XSL文档进行重新编辑。
发明内容
本发明的目的就在于为了解决上述问题而提供一种将XML Schema文档转换为XSL文档的方法。
本发明通过以下技术方案来实现上述目的:
一种将XML Schema文档转换为XSL文档的方法,其特征在于:包括以下步骤:
步骤1:先确定XML Schema标准定义中需要关注的元素,然后确定XMLSchema标准定义的元素和XSL标准定义的元素之间的映射关系;
步骤2:对XML Schema文档进行解析,获取schema标准中需要关注的第一个元素,并添加到XSL文档中;
步骤3:按照深度优先原则依次对XML Schema文档中的<schema>的子节点中的<element>元素进行解析,查找XML Schema中需要关注的元素并添加到XSL文档中,直到完成整个XML Schema文档的转换。
作为优选,所述步骤1具体包括以下步骤:
步骤(1.1):确定XML Schema标准定义中需要关注的元素包括但不限于以下元素:<xs:elment>元素及其name、type和ref属性;<xs:group>元素;<xs:attribute>元素及其ref属性;<xs:complexType>元素;
步骤(1.2):确定XML Schema标准定义的元素和XSL标准定义的元素之间的映射关系,具体为:<xs:elment>映射为<xsl:template>,并使用match属性关联XML元素和模板;/element/element之间的父子关系映射为template/apply-templates,并使用<apply-templates>的select属性,表示仅处理匹配该属性的值的子元素;<xs:attribute>映射为<xsl:value-of>,用于提取某个选定节点的值;/element/attribute映射为/template/value-of。
所述步骤2具体包括以下步骤:
步骤(2.1):创建XSL文档,并添加域名和版本信息;
步骤(2.2):读取XML Schema文档,获取document对象和根节点;
步骤(2.3):对根节点的子节点进行遍历,获取当前的子节点;
步骤(2.4):如果子节点的名称是element,那么解析节点的type、name和ref属性;
步骤(2.5):根据type、name和ref的值,确定需要关注的第一个元素的名称,并将该元素添加到XSL文档中。
所述步骤3具体包括以下步骤:
步骤(3.1):根据子节点的name、type、Ref属性值,确定新的要解析的element元素、element元素的路径Xpath、以及element元素节点名称;
步骤(3.2):获取该element元素节点迭代器;
步骤(3.3):根据element元素节点的名称参数,设置当前正在解析的element元素elementTemplate、以及正在解析的element元素节点的名称;
步骤(3.4):判断该element元素是否是叶子节点,如果是,则转到步骤(3.5);如果不是叶子节点,则转到步骤(3.8);
步骤(3.5):判断element元素节点的名称是否是element,如果是,则转到步骤(3.6);如果不是element,则转到步骤(3.7);
步骤(3.6):获取element元素节点的name、type属性值,并根据name和type的值是否为空,判断是否给elementTemplate元素添加子节点value-of;
步骤(3.7):对节点的ref属性值不为空的元素进行处理,确定新的要解析的element元素、element元素的路径Xpath、以及element元素节点名称;转到步骤(3.2);
步骤(3.8):对该元素的子节点进行遍历,获取元素节点element、元素节点名称、设置节点的Xpath,如果子节点名称是element,则转到步骤(3.9);如果子节点名称是attribute,则转到步骤(3.10);
步骤(3.9):对子节点名称为element的元素进行处理,根据子节点的name、type、ref属性值,确定新的要解析的element元素、element元素的路径Xpath、以及element元素节点名称;将当前的element元素添加到XSL文档中,节点的标签是<apply-templates>,父节点是elementTemplate;转到步骤(3.2);
步骤(3.10):对子节点名称为attributet的元素进行处理,并添加到XSL文档中,节点的标签是<value-of>,父节点是elementTemplate;转到步骤(3.2)。
本发明的有益效果在于:
本发明通过分析XML Schema文档和XSL文档之间的关系,确定XMLSchema文档中需要关注的元素并映射到XSL文档中,从而生成XSL文档的模板,用户只需要依据呈现的不同格式,在生成的XSL文档模板中添加一些html标签,就可以完成XSL文档的编辑,从而降低了XSL文档编辑的复杂度,并提高编辑的效率,并且生成的XSL文档支持基于该XML Schema生成的所有xml文档,通过引用该的XSL文档可以使XML文件呈现不同格式,使得XML文档易于阅读。
具体实施方式
下面结合实施例对本发明作进一步说明:
实施例:
一种将XML Schema文档转换为XSL文档的方法,包括以下步骤:
步骤1:先确定XML Schema标准定义中需要关注的元素,然后确定XMLSchema标准定义的元素和XSL标准定义的元素之间的映射关系;本步骤具体包括以下步骤:
步骤(1.1):确定XML Schema标准定义中需要关注的元素包括但不限于以下元素:<xs:elment>元素及其name、type和ref属性;<xs:group>元素;<xs:attribute>元素及其ref属性;<xs:complexType>元素;
步骤(1.2):确定XML Schema标准定义的元素和XSL标准定义的元素之间的映射关系,具体为:<xs:elment>映射为<xsl:template>,并使用match属性关联XML元素和模板;/element/element之间的父子关系映射为template/apply-templates,并使用<apply-templates>的select属性,表示仅处理匹配该属性的值的子元素;<xs:attribute>映射为<xsl:value-of>,用于提取某个选定节点的值;/element/attribute映射为/template/value-of;
步骤2:对XML Schema文档进行解析,获取schema标准中需要关注的第一个元素,并添加到XSL文档中;本步骤具体包括以下步骤:
步骤(2.1):创建XSL文档,并添加域名和版本信息;
步骤(2.2):读取XML Schema文档,获取document对象和根节点;
步骤(2.3):对根节点的子节点进行遍历,获取当前的子节点;
步骤(2.4):如果子节点的名称是element,那么解析节点的type、name和ref属性;
步骤(2.5):根据type、name和ref的值,确定需要关注的第一个元素的名称,并将该元素添加到XSL文档中;本步骤具体方法如下所示:
将关注的第一个元素dmodule作为<xsl:template>的子节点:
<xsl:template match="/">
<xsl:apply-templates select="dmodule"/>
</xsl:template>
match="/",用于定义整个文档;
步骤3:按照深度优先原则依次对XML Schema文档中的<schema>的子节点中的<element>元素进行解析,查找XML Schema中需要关注的元素并添加到XSL文档中,直到完成整个XML Schema文档的转换;本步骤具体包括以下步骤:
步骤(3.1):根据子节点的name、type、Ref属性值,确定新的要解析的element元素、element元素的路径Xpath、以及element元素节点名称;
步骤(3.2):获取该element元素节点迭代器;
步骤(3.3):根据element元素节点的名称参数,设置当前正在解析的element元素elementTemplate、以及正在解析的element元素节点的名称;
步骤(3.4):判断该element元素是否是叶子节点,如果是,则转到步骤(3.5);如果不是叶子节点,则转到步骤(3.8);
步骤(3.5):判断element元素节点的名称是否是element,如果是,则转到步骤(3.6);如果不是element,则转到步骤(3.7);
步骤(3.6):获取element元素节点的name、type属性值,并根据name和type的值是否为空,判断是否给elementTemplate元素添加子节点value-of;
步骤(3.7):对节点的ref属性值不为空的元素进行处理,确定新的要解析的element元素、element元素的路径Xpath、以及element元素节点名称;转到步骤(3.2);
步骤(3.8):对该元素的子节点进行遍历,获取元素节点element、元素节点名称、设置节点的Xpath,如果子节点名称是element,则转到步骤(3.9);如果子节点名称是attribute,则转到步骤(3.10);
步骤(3.9):对子节点名称为element的元素进行处理,根据子节点的name、type、ref属性值,确定新的要解析的element元素、element元素的路径Xpath、以及element元素节点名称;将当前的element元素添加到XSL文档中,节点的标签是<apply-templates>,父节点是elementTemplate;转到步骤(3.2);
步骤(3.10):对子节点名称为attributet的元素进行处理,并添加到XSL文档中,节点的标签是<value-of>,父节点是elementTemplate;转到步骤(3.2)。
更具体地,上述步骤1和步骤2采用dom4j解析xml的主要过程为:
SAXReader saxReader=new SAXReader();
Document doc=saxReader.read(xsd);//读取XML文件,获得document对象
Elementroot=doc.getRootElement();//获得根节点
Document xslDoc=DocumentHelper.createDocument();//创建XSL文档对象for(Iterator i=root.elementIterator();i.hasNext();){//获取根节点的所有子节点
Element element=(Element)i.next();//或得节点
……}//遍历节点
Element child=elementTemplate.addElement(xxx);//在节点elementTemplate下添加子节点
child.addAttribute(xxx);//为child添加属性
XMLWriterwriter=new XMLWriter(new FileWriter("xsl.xsl"),format);
writer.write(document);
writer.close();//将文档写入XML文件
XML Schema标准定义中需要关注的元素包括:<xs:elment>元素及其name、type和ref属性;<xs:group>元素;<xs:attribute>元素及其ref属性;<xs:complexType>元素等;
XML Schema标准定义的元素和XSL标准定义的元素之间的映射关系:
a)<xs:elment>映射为<xsl:template>;
b)/element/element之间的父子关映射为template/apply-templates;
c)<xs:attribute>映射为<xsl:value-of>;
d)/element/attribute映射为/template/value-of。
上述实施例只是本发明的较佳实施例,并不是对本发明技术方案的限制,只要是不经过创造性劳动即可在上述实施例的基础上实现的技术方案,均应视为落入本发明专利的权利保护范围内。

Claims (1)

1.一种将XML Schema文档转换为XSL文档的方法,其特征在于:包括以下步骤:
步骤1:先确定XML Schema标准定义中需要关注的元素,然后确定XML Schema标准定义的元素和XSL标准定义的元素之间的映射关系;
步骤2:对XML Schema文档进行解析,获取schema标准中需要关注的第一个元素,并添加到XSL文档中;
步骤3:按照深度优先原则依次对XML Schema文档中的<schema>的子节点中的<element>元素进行解析,查找XML Schema中需要关注的元素并添加到XSL文档中,直到完成整个XML Schema文档的转换;
所述步骤1具体包括以下步骤:
步骤(1.1):确定XML Schema标准定义中需要关注的元素包括以下元素:<xs:elment>元素及其name、type和ref属性;<xs:group>元素;<xs:attribute>元素及其ref属性;<xs:complexType>元素;
步骤(1.2):确定XML Schema标准定义的元素和XSL标准定义的元素之间的映射关系,具体为:<xs:elment>映射为<xsl:template>,并使用match属性关联XML元素和模板;/element/element之间的父子关系映射为template/apply-templates,并使用<apply-templates>的select属性,表示仅处理匹配该属性的值的子元素;<xs:attribute>映射为<xsl:value-of>,用于提取某个选定节点的值;/element/attribute映射为/template/value-of;
所述步骤2具体包括以下步骤:
步骤(2.1):创建XSL文档,并添加域名和版本信息;
步骤(2.2):读取XML Schema文档,获取document对象和根节点;
步骤(2.3):对根节点的子节点进行遍历,获取当前的子节点;
步骤(2.4):如果子节点的名称是element,那么解析节点的type、name和ref属性;
步骤(2.5):根据type、name和ref的值,确定需要关注的第一个元素的名称,并将该元素添加到XSL文档中;
所述步骤3具体包括以下步骤:
步骤(3.1):根据子节点的name、type、Ref属性值,确定新的要解析的element元素、element元素的路径Xpath、以及element元素节点名称;
步骤(3.2):获取该element元素节点迭代器;
步骤(3.3):根据element元素节点的名称参数,设置当前正在解析的element元素elementTemplate、以及正在解析的element元素节点的名称;
步骤(3.4):判断该element元素是否是叶子节点,如果是,则转到步骤(3.5);如果不是叶子节点,则转到步骤(3.8);
步骤(3.5):判断element元素节点的名称是否是element,如果是,则转到步骤(3.6);如果不是element,则转到步骤(3.7);
步骤(3.6):获取element元素节点的name、type属性值,并根据name和type的值是否为空,判断是否给elementTemplate元素添加子节点value-of;
步骤(3.7):对节点的ref属性值不为空的元素进行处理,确定新的要解析的element元素、element元素的路径Xpath、以及element元素节点名称;转到步骤(3.2);
步骤(3.8):对该元素的子节点进行遍历,获取元素节点element、元素节点名称、设置节点的Xpath,如果子节点名称是element,则转到步骤(3.9);如果子节点名称是attribute,则转到步骤(3.10);
步骤(3.9):对子节点名称为element的元素进行处理,根据子节点的name、type、ref属性值,确定新的要解析的element元素、element元素的路径Xpath、以及element元素节点名称;将当前的element元素添加到XSL文档中,节点的标签是<apply-templates>,父节点是elementTemplate;转到步骤(3.2);
步骤(3.10):对子节点名称为attributet的元素进行处理,并添加到XSL文档中,节点的标签是<value-of>,父节点是elementTemplate;转到步骤(3.2)。
CN201811208124.3A 2018-10-17 2018-10-17 将XML Schema文档转换为XSL文档的方法 Active CN109597917B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811208124.3A CN109597917B (zh) 2018-10-17 2018-10-17 将XML Schema文档转换为XSL文档的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811208124.3A CN109597917B (zh) 2018-10-17 2018-10-17 将XML Schema文档转换为XSL文档的方法

Publications (2)

Publication Number Publication Date
CN109597917A CN109597917A (zh) 2019-04-09
CN109597917B true CN109597917B (zh) 2022-03-01

Family

ID=65957440

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811208124.3A Active CN109597917B (zh) 2018-10-17 2018-10-17 将XML Schema文档转换为XSL文档的方法

Country Status (1)

Country Link
CN (1) CN109597917B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1967580A (zh) * 2006-04-04 2007-05-23 华为技术有限公司 电子帐单的实现方法
US7373600B2 (en) * 2001-03-27 2008-05-13 Koninklijke Philips Electronics N.V. DICOM to XML generator
CN101271475A (zh) * 2008-04-02 2008-09-24 北京邮电大学 一种商业智能系统
CN101361063A (zh) * 2006-04-12 2009-02-04 龙搜(北京)科技有限公司 支持基于规则的文档内容挖掘的系统与方法
CN101719162A (zh) * 2009-11-27 2010-06-02 武汉大学 基于片段模式匹配的多版本开放式地理信息服务访问方法及系统
CN101739436A (zh) * 2009-09-28 2010-06-16 孙彬 基于xml的柔性数据迁移方法
JP4786695B2 (ja) * 2008-11-04 2011-10-05 富士通株式会社 構造化文書の構造変換装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7721195B2 (en) * 2004-08-24 2010-05-18 Oracle International Corporation RTF template and XSL/FO conversion: a new way to create computer reports
US9594731B2 (en) * 2007-06-29 2017-03-14 Microsoft Technology Licensing, Llc WYSIWYG, browser-based XML editor
US9098558B2 (en) * 2013-04-01 2015-08-04 Oracle International Corporation Enhanced flexibility for users to transform XML data to a desired format
US10140266B2 (en) * 2013-12-31 2018-11-27 Altova Gmbh Profile-based optimization of XSLT transformations

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7373600B2 (en) * 2001-03-27 2008-05-13 Koninklijke Philips Electronics N.V. DICOM to XML generator
CN1967580A (zh) * 2006-04-04 2007-05-23 华为技术有限公司 电子帐单的实现方法
CN101361063A (zh) * 2006-04-12 2009-02-04 龙搜(北京)科技有限公司 支持基于规则的文档内容挖掘的系统与方法
CN101271475A (zh) * 2008-04-02 2008-09-24 北京邮电大学 一种商业智能系统
JP4786695B2 (ja) * 2008-11-04 2011-10-05 富士通株式会社 構造化文書の構造変換装置
CN101739436A (zh) * 2009-09-28 2010-06-16 孙彬 基于xml的柔性数据迁移方法
CN101719162A (zh) * 2009-11-27 2010-06-02 武汉大学 基于片段模式匹配的多版本开放式地理信息服务访问方法及系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
"一种基于XML的数据转换方法的设计与实现";秦英、马永起、蒙立荣;《微型机与应用》;20171031;第30卷(第20期);第30-33页 *
"交管系统数据交换平台的设计与实现";刘颖;《上海电气技术》;20090915;第2卷(第3期);第15-18页 *
"基于XML的异构数据交换系统的研究与实现";杨剑、唐慧佳、孙林夫、王胜银;《计算机工程》;20051005;第31卷(第19期);第195-197页 *

Also Published As

Publication number Publication date
CN109597917A (zh) 2019-04-09

Similar Documents

Publication Publication Date Title
US7640493B2 (en) Importing and exporting markup language data in a spreadsheet application document
US7761787B2 (en) Document generation system and user interface for producing a user desired document
US7979793B2 (en) Graphical creation of a document conversion template
US7337182B2 (en) Management of markup language data mappings available to a spreadsheet application workbook
Mani et al. Semantic data modeling using XML schemas
US7415482B2 (en) XBRL enabler for business documents
US7080083B2 (en) Extensible stylesheet designs in visual graphic environments
US8024368B2 (en) Generating XML instances from flat files
US8407585B2 (en) Context-aware content conversion and interpretation-specific views
US7613996B2 (en) Enabling selection of an inferred schema part
US20040221233A1 (en) Systems and methods for report design and generation
US20100205524A1 (en) Extensible stylesheet designs using meta-tag information
JP2004519781A (ja) DICOM−to−XML発生器
AU2005202103A1 (en) Programmable object model for namespace or schema library support in a software application
CN102402556A (zh) Xml文件的校验方法和装置
CN110688830A (zh) 征信模板的转换方法及装置
US8762398B2 (en) Method of integrating data of XML document with database on web
CN109597917B (zh) 将XML Schema文档转换为XSL文档的方法
CN104317935B (zh) 一种xml账单文件批量生成html页面的方法及系统
US8719693B2 (en) Method for storing localized XML document values
Pal et al. Managing collections of XML schemas in Microsoft SQL Server 2005
Zhang et al. Schemas extraction for XML documents by XML element sequence patterns
Zheng et al. The Implementation of the Web Mining based on XML technology
Xu et al. A schema mapping technique for XML-based semantic geodata translation
Miles Ead McTaggart: Using VBA to automate EAD container list tagging

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant