小编dar*_*osh的帖子

Oracle可以在本地文件系统上使用XSD架构验证XML吗?

我想问一个关于XML文档验证的问题,反对其相应的XML模式,如果你能帮助我,我将不胜感激.实际上,我刚开始学习XML模式(我完全是初学者).我已经购买了由Priscilla Walmsley(第2版)编写的"Definitive XML Schema"一书,该书介绍了XML Schema 1.1(我相信它是最新版本).

现在的问题是,在本书的所有示例和练习中,模式文件的名称空间和位置都是使用Web URL给出的.

这是本书的一个例子:

这是架构

<xs:schema  xmlns:xs="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://datypic.com/prod"
            xmlns:prod="http://datypic.com/prod">

    <xs:element name="product" type="prod:ProductType"/>
    <xs:complexType name="ProductType">
        <xs:sequence>
            <xs:element name="number" type="xs:integer"/>
            <xs:element name="size" type="prod:SizeType"/>
        </xs:sequence>
        <xs:attribute name="effDate" type="xs:date"/>
    </xs:complexType>
    <xs:simpleType name="SizeType">
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="2"/>
            <xs:maxInclusive value="18"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)

并且要针对上述内容验证的XML内容是这样的

<prod:product xmlns:prod="http://datypic.com/prod" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://datypic.com/prod prod.xsd"
          effDate="2011-04-12">
    <number>557</number>
    <size>10</size>
</prod:product>
Run Code Online (Sandbox Code Playgroud)

显然,[http://datypic.com/prod]是由作者维护的网站,因此在我阅读本书时,我无法在本网站上添加或删除任何文件.因此,我需要将XML和XSD文档放在我的本地硬盘上(我使用的是Linux Fedora Core 17 X86_64).所以我所做的,就是把模式的内容在一个名为例如"文件示例- 01.xsd "和一个名为"文件的XML内容示例- 01.xml ".

我使用oracle PL/SQL包DBMS_XMLSCHEMA(Enterprise Edition 11.2.0.1.0)来首先注册模式,然后调用XMLType对象的validate方法,以便根据模式验证我的XML文档,类似于以下链接:

https://forums.oracle.com/forums/thread.jspa?messageID=2462207

我在oracle中创建了一个目录(通过CREATE DIRECTORY)语句:

/家庭/火车/文档/ myutl_file_dir /

我把我的XML和XSD文档放在哪里.以下是我如何更改上述XML内容以便在本地引用XSD

<prod:product xmlns:prod="http://datypic.com/prod" 
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://datypic.com/prod file:///home/train/Documents/myutl_file_dir/Example-01.xsd"
               effDate="2011-04-12"> …
Run Code Online (Sandbox Code Playgroud)

xml oracle xsd plsql xml-parsing

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

为什么在同步块之外的notifyAll()调用时引发IllegalMonitorStateException?

目前我正在阅读在线Java Concurrency教程的Guarded Blocks一章.作为练习,我创建了一个类,以便在实践中正确使用wait()和notifyAll()方法.然而,我自己的代码中有些东西我无法理解,如果你能帮助我,我会很感激.

环境:

OS: Fedora Core 17 X86_64
JDK: 1.8.0_05 (64 Bit)
Run Code Online (Sandbox Code Playgroud)

测试用例规范:

  • 定义一个创建并启动4个线程的类,
  • 每个线程的run()方法实际上是一个无限循环,并在用户执行CTRL + C时停止,
  • 这些线程中的每一个都必须在{A,B,C,D}中打印一个字母,
  • 无论四个创建的线程中的哪一个是当前运行的线程,与最后打印的字母相比,必须遵守字母的字母顺序.
  • 首先打印字母'A'

因此,预期的输出在终端上是这样的:

A
B
C
D
A
B
C
D
A
B
C
D
...
Run Code Online (Sandbox Code Playgroud)

测试用例实现:

/*
My solution is based on a shared lock among threads.
This object has one attribute: a letter, indicating 
the letter that must be printed on the user terminal.
*/
class SharedLock
{
    private char letter;

    public SharedLock(char letter)
    {
        this.letter …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading synchronization

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