問題タブ [xml-validation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Xerces XMLSchemaFactory: 要素の宣言が見つかりません
XSD ファイルに対して XML ファイル (XML ファイルに名前空間もスキーマ宣言もありません) を検証したいと考えています。
XML ファイルは次のようになります。
XSD ファイルは次のとおりです。
コードは次のようになります。
私はこれに 3 時間を費やしました。PC でローカルに動作し、以前はサーバーで動作していた (と思います) が、現在はサーバーでは動作しません。PC とサーバーの違いを特定しようとしましたが、どちらも同じ JAR を使用しているなどです。
とにかく、私は次の違いを特定しました。クラス名をメソッドに渡していませんでしたSchemaFactory.newInstance
(ほぼ間違いなく間違いです)。 のクラス名を出力するxsdFac
と、ローカルとサーバーで異なることがわかりました。なぜそうなったのかを知りたいとは思いません(私にはわかりません)。機能するものを見つけて、明示的に指定する方がよいと思います。
- 私のPC(動作)ではそうでした
com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory
。newInstance
呼び出しで明示的に指定すると、PC とサーバーで動作します。 - サーバー上 (動作しませんでした) でした
org.apache.xerces.jaxp.validation.XMLSchemaFactory
。newInstance
呼び出しで明示的に設定すると、PC とサーバーの両方で同じエラーが発生します。
com.sun
動作するものの先頭にあることに注意してください。
だから少なくとも私は解決策を持っています、それは良いことです。com.sun
しかし、コードで明示的にクラスを使用するべきではないと思いますか?
その他の情報:
- 私が得るエラーは次のとおりです。
org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'report'
- これは、動作中のバージョンで、要素名をスキーマに存在しない別のものに変更したときに発生するエラーと同じです。つまり、「私はあなたのスキーマを理解しており、XML を理解しています。そして、スキーマのどこにも宣言されていない要素を使用しています」という意味だと思います。
xercesImpl-2.9.1.jar
私のプロジェクトにあります(サーバーとPCの両方)。- この JAR には
XMLSchemaFactory.class
、非動作バージョンで指定されたパッケージの下に含まれています (つまり、そこにあり、検出可能であり、動作するはずであり、結局、見つからないクラスに関連する例外は発生しません)。 doc
私が解析しているオブジェクトは、どちらの場合も、org.apache.xerces.dom.DeferredDocumentImpl
したがって、私の質問は次のとおりです。スキーマファクトリの明示的な Xerces 実装を使用したいと思います (と思います)。JAR を含め、Xerces の Document オブジェクトがあり、基本的に Xerces バリデーターを使用しています (動作ケースcom.sun
)。
似たような経験をした人はいますか?
.net - XSDを使用した複雑なXML検証
次のXMLがあるとすると、検証を防ぐためにXSDスキーマ(以下でも説明)をどのように更新する必要がありますか?
基本的に、質問#3の場合、タグには回答が1つしかないため、選択式の質問のように見えます。ただし、タグ内には少なくとも1つのタグが必要です。そうでない場合、正しい質問以外に選択できる質問はありません。
XSDは次のとおりです。
coldfusion - Coldfusion で文字列を xml の有効なテキストに変換する
Coldfusion で文字列を xml の有効なテキストに変換する方法が必要です。何か案は?
ありがとう!
xsd - XSD および要素の存在要件、またはその他のオプション
XSD レベルで、ドキュメント内の別の要素の存在に基づいて要素要件を定義できますか?
たとえば、要素も存在する場合は<firstname />
常に要素を提供する必要<id />
があります。それ以外の場合、名前はオプションです。
これを XSD レベルで強制できない場合、両方の要素をオプションにして、別のレベルのチェックを通じて要件を強制する必要がありますか?
オプション大歓迎。
java - XSD の基本的なヘルプが必要 -- スキーマの名前空間?
次の XML ファイルのようなものがあります。
最初の要件は、この XML が何があっても変更できないことです。以下でそれを行うことを提案しないでください。
これを検証するスキーマを作成する必要があります。そして、検証を行う Java コード。
私は完全に立ち往生しており、何が起こっているのか本当にわかりません。
このようなスキーマはどのようなものですか? 私はそれを手に入れましたが、それはとても悪いので投稿するつもりはありません. :PI は、名前空間を XML 要素に追加する必要はありません。彼らは石に設定されています。
これらすべての要素がパーサーによって「検出」されるようにするにはどうすればよいですか? この名前空間のナンセンスをすべて無視するように言うことはできますか。スキーマに対して検証するこのアプリケーションでは、名前空間の競合はまったく不可能です。
入れてみました
私の名前空間情報と
更新:これまでに与えられた回答を反映するために、私がやっていることを更新しました! :)
XSD
XML v0003
ロードして検証するコードはい。質問する前に、ファイルをロードできます。20回くらいチェックしました。:P
xml - ノードに複数の子がある場合、XSD に対する XML 検証が失敗する
取得したデータが有効かどうかを検証できるように、システム間で使用する XML ファイルの XSD を生成する必要があります。
XML は次のようになります (ただし、より多くのフィールドがあります)。
私のXSDは次のとおりです。
このスキーマは、ノードが 1 つしかない場合は機能しItem
ますが、ノードが複数あるとすぐに次のエラーが発生します。
要素 'Extra_Info' に無効な子要素 'Item' があります。
シーケンスとして指定されている場合、なぜ機能しないのですか?
ありがとう!
PS:迅速な検証のためにThis Online Validatorを使用しましたが、XMLReader でも同じエラーが発生します。
java - trax によるスキーマ検証
Transformer インターフェイスで XSLT を適用するときに XML 読み取りにスキーマ検証を適用したい場合、最初に検証を有効にした DOMSource で DOM を構築する必要がありますか、それとも StreamSource でこれを行うように説得する方法はありますか?
xml - DTDは、任意の名前の1つ以上の属性を許可するように記述できますか?
次のような柔軟な属性名を可能にするXML構造のDTDを作成しています。
したがって、これに対する単純なDTDは次のとおりです。
問題は、XMLの要件は、「iCouldBeAnything」が何でもなければならないということです。 DTDを使用してこれを説明することは可能ですか、それとも他の種類のXML検証に依存する必要がありますか?
xml - XSD - 検証時に無視される属性制限
以下の xsd を以下の xml ファイルに対してテストしようとすると問題が発生します。ツールが悪いのでしょうか、それとも xsd が予測どおりに機能していないのでしょうか?
テスト済みのソフトウェア:
- xmllint (libxml バージョン 20707 を使用)
- XML コピー エディター 1.2.0.6
予想された結果:
- test.xml は検証します
- ドメインタグのアカウント属性の形式が正しくないため、test-bad.xml は検証に失敗します
観察結果: - test.xml の検証 - test-bad.xml の検証
test.xml
test-bad.xml
構成.xsd
構成.dtd
struts - Struts 1 の検証 - \xNN 形式の XML 定義の定数により、bea weblogic 11g で誤ったエラーが発生する
次のような表記法を使用して、「Struts 1」検証で検証定数を定義しています。
これは、Oracle IAS 10g では長い間機能しているように見えましたが、Bea Weblogic 11g への移行後、この MASK に対する検証で誤ったエラーが返されます。
検証フレームワークにデバッグすると、上記の定数値が文字通りに取られているように見えることがわかりました。
ファイルは、UNIX 形式の ISO-8859-1 標準として ANSI でエンコードされています。
ここで何がうまくいかなかったのか誰か知っていますか?