小编Btz*_*Btz的帖子

我可以在XML Schema元素名称中使用正则表达式吗?

我正在尝试为我传递的一段代码生成的XML创建XML Schema.我将描述我的问题的简化版本.假设这段代码生成的XML文件描述了一个文本文档; 它看起来像这样:

<document>
  <r1>A line of text</r1>
  <r2 style="bold">Another line which is bold</r2>
  <r3>Yet another line</r3>
</document>
Run Code Online (Sandbox Code Playgroud)

等等.我知道不是最好的设计 - 如果行号是属性会更好,但这就是我必须使用的.它代表了行号,这就是问题所在.有没有办法编写一个Schema,让我为元素名称指定一个正则表达式(或类似的)?我希望XSD文件看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
        targetNamespace="http://www.example.org/SimpleSchema" 
        xmlns:tns="http://www.example.org/SimpleSchema" 
        elementFormDefault="qualified">
    <xs:element name="document">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="rX" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:simpleContent>
                            <xs:extension base="xs:string">
                                <xs:attribute name="style" type="xs:string" />
                            </xs:extension>
                        </xs:simpleContent>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
 </xs:schema>
Run Code Online (Sandbox Code Playgroud)

...其中第9行的"rX"表示需要表达" 以r开头并以X结尾的名称,这是一个整数 ".

我宁愿避免自己修复生成代码,所以我想先看看是否可以编写合适的XML Schema.在此先感谢大家.

xml xsd

2
推荐指数
1
解决办法
1814
查看次数

从Oracle数据库中读取XML文件中的额外空格 - 为什么?

我正在试验Python和Oracle XML DB.我有一个表,其中包含XMLType列和Oracle 11g数据库中的ID列.XML列的存储模型是对象关系.有时我需要获取一个完整的XML文件,并且通常它超过4000个字符,所以我使用此查询来获取CLOB:

select t.representation.getclobval()
from myxmldocs t 
where id=:documentId
Run Code Online (Sandbox Code Playgroud)

当我运行此查询时,输出包含额外的空格,XML元素之间的换行符和制表符在我插入的XML文档中绝对不存在.效果是某种格式化,因此输出如下所示:

<A>\n
\t<B></B>\n
\t\t<C>Some text</C>\n
\t\t<C>Some more text</C>\n
\t<B></B>\n
...
Run Code Online (Sandbox Code Playgroud)

等等.相当漂亮和可读,但为什么我得到它?它还混淆了我正在使用的额外空格上的其他库.

如果我删除getclobval(),我的Python客户端不会获得CLOB而是一个Object,我不知道如何处理它.

这似乎是一致的; 我使用sqlplus命令行客户端,并使用不同的XML架构创建其他表,然后查询它们.在我的原型的先前版本中,我使用XMLType列使用CLOB存储模型并且没有此问题.

我应该如何重写查询以获得带有XML文件的CLOB而无需额外的格式化?


更新:根据注释中的请求,这是我select dump(t.representation) from myxmldocs t where id=:documentId从命令行客户端运行查询的输出(替换当然:documentId与数据库中的实际现有ID):

DUMP(T.REPRESENTATION)
--------------------------------------------------------------------------------
Typ=58 Len=218: 32,156,148,1,0,0,0,0,80,193,223,20,0,0,0,0,216,15,47,21,0,0,0,0,
80,44,55,21,0,0,0,0,0,202,154,59,160,15,0,0,160,15,0,0,1,0,4,0,220,190,195,71,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,33,65,0,15,0,72,0,1,0,0,0,0,0,0,0,49,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0
Run Code Online (Sandbox Code Playgroud)

xml oracle xmltype

1
推荐指数
1
解决办法
3086
查看次数

标签 统计

xml ×2

oracle ×1

xmltype ×1

xsd ×1