我还在寻找解决某些数据库导出问题的解决方案,如下所示:
<DATA>
<ROW>
<ID>36342</ID>
<TIMESTAMP1>2017-11-24 14:54:51</TIMESTAMP1>
<TIMESTAMP2>2017-11-24 14:54:51</TIMESTAMP2>
<NOTES>please try <variable_name> inside <function></NOTES>
</ROW>
<ROW>
<ID>36341</ID>
<TIMESTAMP1>2017-11-24 12:51:50</TIMESTAMP1>
<TIMESTAMP2>2017-11-24 12:51:50</TIMESTAMP2>
<NOTES>Otherwise <option> could also be</NOTES>
</ROW>
</DATA>
实际使用的数据实际上是一个支持数据库,意味着成千上万的Entrys(NOTES2)中有多个占位符,所以当然我无法更改任何内容。 Notes也可以包含任意数量的占位符,包括没有。
现在的问题是,如何能够理解&#34; NOTES&#34;作为纯文本,忽略所有XML外观,如<function>
,<variable_name>
和<option>
。 (当然还有很多其他人)
我还有什么:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="DATA" sql:is-constant="1" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ROW" sql:relation="document" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ID" type="xsd:string" />
<xsd:element name="TIMESTAMP1" type="xsd:string" />
<xsd:element name="TIMESTAMP2" type="xsd:string" />
<xsd:element name="NOTES" type="string" >
<xsd:complexType>
<xsd:sequence>
<xsd:any processContents="skip" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
我必须补充一点,事实上我不是XML / XSD的专家。我只能理解我读到的内容。我所读到的是,内部发现的任何标签&#34; NOTES&#34;应该在解释时跳过。但不幸的是,Parser说:
'type' cannot be present with either 'simpleType' or 'complexType'
当然,错误消息告诉我删除实体&#34;键入&#34;元素&#34;注意&#34;,但如果我这样做,错误是:
Text is not allowed in the context of element 'NOTES' according to DTD/Schema.
那么我现在如何获得这样一个元素的全部内容呢?
祝你好运 的Marius
答案 0 :(得分:2)
无法编写XSD以允许XML不是well-formed。
您无法定义允许的XSD
price':[1, 4], 'amount':[11,40]
因为这样的数据不是格式良好的XML。如果不将<NOTES>please try <variable_name> inside <function></NOTES>
字符用作标记的开头,则不能在XML中使用未转义的字符。
在XSD中你无能为力可以改变这一点。
逃脱<
:
<
使用CDATA:
<NOTES>please try <variable_name> inside <function></NOTES>
或关闭“元素”:
<NOTES><![CDATA[please try <variable_name> inside <function>]]></NOTES>