我正在使用HL7版本2.7.1。
我已经从hl7网站下载了相应的XSD(总共197个XSD)。
链接:http://www.hl7.org/documentcenter/private/standards/V271/HL7-xml%20v2.7.1.zip
我写了一些Java代码,试图将架构分配给Schema对象,架构给了我错误。
错误是:src-resolve:无法将名称“ ST”解析为一个(n)“类型定义”组件。
/**
* Validating XML with XSD
* @param inputXml
* @param schemaLocation
* @return returns validation true/false
* @throws SAXException
*/
public boolean isValidXML(String inputXml, String schemaLocation)
throws SAXException {
// build the schema
SchemaFactory factory = SchemaFactory
.newInstance("http://www.w3.org/2001/XMLSchema");
File schemaFile = new File(schemaLocation);
Schema schema = null;
Validator validator = null;
try {
//TODO: Failed in this line. schema = factory.newSchema(schemaFile);
schema = factory.newSchema(schemaFile);
validator = schema.newValidator();
之后,我要在oXygen XML Editor中检查架构,并得到相同的错误。
“ src-resolve:无法将名称'ST'解析为一个(n)'类型定义'组件。”
PFA:截图
我正在寻找对XSD文件的引用包含“ ST”定义的XSD文件。
如果我错了,请纠正我。
最佳答案
数据类型ST为“字符串”。您可以在所有HL7规范中找到其定义(供您使用),例如在Health Level Seven, Version 2.3.1 © 1999 (online PDF)的“ 2.8 DATA TYPES”一章中
在XSD文档中,所有数据类型定义应位于文件datatypes.xsd
中
我记得架构中确实存在一些错误,并且我还尝试使用Version 2 v2.xml XML Schemas for HL7 Version 2.5 and earlier (Sun_HL7v2xsd.zip),其中错误较少,但仅定义到2.5.1版
我不确定您的用例到底是什么,您到底需要做什么才能使用,需要与哪些系统接口以及已经拥有的代码库等,因为即使从其他HL7问题中也看不到它-但是..
..在我们的系统中,我们终于解决了
不使用模式强制的强类型语法,因为我们正在连接的多个系统并不完全遵循它们
流经我们系统的大多数消息都在HL7 v2.3,v2.3.1中,而在HL7 v2.5中则很少(必须同时支持所有消息)
我们使用简单的通用解析器,可以解析几乎所有类似于二进制HL7消息的内容。段和字段的解释由另一个软件层决定,在该软件层中,一组限制确定哪些消息是好消息,哪些消息是坏消息-是可配置的
如果我要实现对另一个协议或另一个协议版本的支持,我将采用类似的方法。加载一堆XSD并生成另一类可以在内存中表示它们的类,只是为了在代码编辑器中启用IntelliSense-这不是我的首选实现决定
关于java - src-resolve:无法将名称“ST”解析为HL7中的一个(n)“类型定义”组件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25379260/