- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我面临以下问题。我们使用服务数据对象,因为我们的目标运行时是 IBM WebSphere,它应该是该 API 的原生运行时。我们使用的堆栈是 Java EE、Eclipse Oxygen 作为主要 IDE、根据 SDO 2.1.0 规范的 SDO 引用实现、IBM WebSphere 9 和 JRE8。
根据 SDO javadoc 有一个 define(java.io.InputStream xsdInputStream, java.lang.String schemaLocation)
XSDHelper
下的方法类,它将所需的 XSD 模式加载到 WAS 运行时中。加载模式后,其类型即可用于其他操作,包括 DataObject
创建..我定义架构的方式如下所示:
InputStream is = new BOStorage().getInputStreamXSD("/test.xsd");
XSDHelper.INSTANCE.define(is, null);
define()
方法从 EJB 构造函数调用。 test.xsd
位于我的 Eclipse 项目的 src 文件夹下。
src
| test.xsd
| test1.xsd
|
|___ejb.package.name
现在了解一下 test.xsd 本身。它引用了相同的另一个 XSD targetNamespace
使用<include>
标签:
test.xsd 片段:
...
<xsd:schema
targetNamespace="http://ejb/package/name"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:bons0="http://ejb/package/name">
<xsd:include schemaLocation="test1.xsd"></xsd:include>
<xsd:include schemaLocation="test2.xsd"></xsd:include>
<xsd:complexType name="TestSDO">
...
<xsd:element minOccurs="0" name="RefObject"
type="bons0:RefObject">
</xsd:element>
...
test1.xsd
包含 complexType
命名RefObject
,在 test.xsd
中引用.
test1.xsd 片段:
...
<xsd:complexType name="RefObject">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="type"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
...
正如版本 2.1.0 的官方 SDO Java 规范所说:
9.7 XSD Mapping Details
...
- All
<group>
references,<attributeGroup>
references,<include>
s, and<import>
s are fully expanded to the equivalent XSD as if these declarations were not present....
对于我的愿景来说,这意味着在我的例子中,SDO 实现应该:
加载test.xsd;
发现它引用了 test1.xsd
在其 <include>
部分;
作为 test1.xsd
位于同一src
文件夹,如test.xsd
是的,我的期望是它将隐式加载到 WebSphere 运行时环境中。
但是我在尝试创建 RefObject
的 DataObject 时遇到错误类型:
CWSDO0001E: Cannot create a data object of the type {http://ejb/package/name}RefObject because the type cannot be found
我可以得出的结论是,SDO API 并非设计为以这种方式工作,或者我的 XSD 或任何不适合或包含一些错误。
任何帮助将不胜感激。
更新:在使用“全局”XSD(包括所有内联引用)的情况下,它的工作方式与预期一样。我之前提到的所有内容都是从无状态 EJB bean 运行的。
导致错误的示例代码:
@Stateless(mappedName = "TestSDO")
@Remote(TestSDORemote.class)
@Local(TestSDOLocal.class)
public class TestSDO implements TestSDORemote, TestSDOLocal{
...
// default EJB constructor
public TestSDO() {
String textInfo = "";
try {
defineSDOTypes();
} catch (Exception e) {
LOGGER.log(Level.WARNING, "Could not define SDO types");
}
}
...
private void defineSDOTypes() {
HelperContext hc =
SDO.getHelperContextFactory().createHelperContext("ScopeManagerTestID",
null);
XSDHelper xsdHelper = hc.getXSDHelper();
try (InputStream is = new BOStorage().getInputStreamXSD("/test.xsd")) {
xsdHelper.define(is, null);
} catch (IOException e) {
LOGGER.logp(Level.WARNING, CLASS_NAME, METHOD_NAME, "Unable to load the
schema: " +
"test.xsd" + ": " + e.getMessage());
e.printStackTrace();
}
...
// creates the target Data Object (here comes the error)
private void createBO(){
DataObject dob = DataFactory.INSTANCE.create("http://ejb/package/name",
"RefObject");
}
...
最佳答案
看看 Tuscany SDO repo ,你似乎想做类似的事情:
URL url = getClass().getResource("/test.xsd");
InputStream inputStream = url.openStream();
xsdHelper.define(inputStream, url.toString());
inputStream.close();
也就是说,我认为您需要传入第二个参数的值:schemaLocation 作为 javadoc,而不是执行 xsdHelper.define(is, null)
建议:
schemaLocation - the URI of the location of the schema, used for processing relative imports and includes. May be null if not used.
关于java - SDO API : how to make XSDHelper. 实例是否正确定义带有 <include> 的 XSD 架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50772531/
我知道我以前在某个地方看到过这个,但我再也找不到它了。我需要一个从另一个 xsd 中调用 xsd 文件的示例。这在生成大量 xml 文件的情况下非常有用,但在这些 xml 文件之间存在大量公共(pub
有人知道供应商中立的 XSD 来描述关系数据库模式吗?我们的系统需要获取有关数据库结构的信息: 表 列和类型 主键和外键约束 索引 等 以独立于供应商的方式并将其存储在 XML 文件中以供以后处理。
我在 XSD 中使用 gml (3.1.1) XSD 作为我的应用程序。我想下载版本 3.1.1 中的所有 gml XSD,例如 zip 文件。换句话说:基本 xsd 是 here我想用 zip 文件
我想要一个 XSD 来验证包含具有许多别名但每个别名具有不同值的文件元素的 XML。 这是我的 XML: Document1
我看到一个 xml 架构 ( EPP ) 将 xsd:choice 与一个元素一起使用,即使我们可以使用 xsd:enumeration 代替:
我目前工作的公司将架构或契约(Contract)版本编入根节点。例如, ... 我正在寻找人们对这种设计方法的意见,因为我不相信它是合理的。例如,它要求所有使用此模式作为消息传递契约的服务都能够发
我在处理 Web 服务响应时遇到了 Apache CXF 解析错误。归结为一个空元素被返回: 元素定义如下: 现在我在 CXF 邮件列表上看到了 empty value is not allowe
XSD 可以为比较两个元素添加约束吗? 假设我在 DataRangeType 下有 Begin End 我想添加一个约束说 Begin 非常
我想声明一个要包含在复杂类型声明中的元素,并且该元素有一个强制属性:“option=MyOption”,但是“选项”属性的值可以是任何值,具体取决于上下文。 也就是说:在使用包含该元素的复杂类型的任何
我需要能够将简单元素类型设置为整数,但也可以将其设置为空。如果此示例为空且空白字段不是整数,则此示例将发送错误。我该如何解决? 最佳答案 您要做的是在同一元素上分配限制,并对其进行合并,例如以下示例
对于这个 xml: 我有这个模式,它似乎可以根据 w3 schema validation service 进行验证,并且该架构可以很好地验证上述 XML。遗憾的是,xsd.exe
我有两个 XSD 文件(源文件和目标文件)...我应该在什么基础上映射这两个文件以获得 XSLT?我知道 MapForce 如何帮助映射,但我使用示例项目..现在我想知道我应该在什么基础上映射我的客户
我有一个 .cs 文件,其中包含 XTypedElement 和 IXMetaData 的子类。微软有一个 tool that generates XSD files automatically来自托
这个问题在这里已经有了答案: XML Schema to validate XML Schemas? (3 个答案) 关闭 9 年前。 是否存在可验证其他 XML 架构的 Xml 架构? 我想做的是
假设我正在处理一个 xsd:simpleType,它是一个字符串,需要具有特定的字符集和特定的最大长度,类似于以下代码: 所以我的 xsd 类型将是一个只
JAXB 同时映射 xsd:base64Binary和 xsd:hexBinary类型为 byte[] . 鉴于我有一个架构/DOM 元素代表这些类型中的每一个,例如: ABCD对于 xsd:hexB
我非常确定我在这里遗漏了一些简单的东西。 我正在使用 netbeans 在两个单独的项目中创建一个 web jax-ws web 服务和一个客户端,并且我有一些自定义绑定(bind)已使用 net b
将字节数组表示为 XSD 架构的最佳方式是什么?我有一个字节输入,我需要解析它并将其提供给 JAXB 从 XSD 模式生成的 Java 对象以供将来验证。我输入中的每条信息都由偏移量和长度定义。我想将
我的架构的这一部分给我带来了麻烦:
我需要定义元素“MyData”的名为“DataValue”的属性。但要求是“DataValue”的类型可以动态更改,即数据值在一个实例中可以是字符串,而在其他实例中它可以是 int 或 bool。它可
我是一名优秀的程序员,十分优秀!