問題タブ [keyref]
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.
xml - XSDキー/キーリファレンスの初心者向け質問
非常に単純な XML スキーマ制約を実装しようとしています。
タイプ<batz>の要素のidref属性は、少なくとも 1 つの要素<bar>のid属性と一致する値を持つことのみを許可する必要があります。
それが意味をなさない場合は、以下の XML ドキュメントの例を見てください。実際には、私が言葉で表現しようとするよりもよく説明されていると思います。
では、質問: xmllint が以下のスキーマと xml の組み合わせを通過させるのはなぜですか (ドキュメントが有効であると表示されます)。目的の制約を達成するためにそれを修正する方法は?
スキーマ:
ドキュメント:
xpath - XPathの要素タイプに基づいてkeyrefセレクターを定義します
次のようなXMLファイルがあるとします。
このXMLファイルの構造を定義するXSDファイルで、名前「b」と「c」で要素を同じタイプに定義しました(タイプには属性「d」が必要です)。
'b'と'c'の両方であるタイプのすべての要素のkeyReferenceを作成したいとしますが、XPathにこれを行う方法はありますか?
'a'のタイプの定義では、次のようなものが期待されます。
このようなことは可能ですか、それともXSDでもXPathはスキーマに対応していませんか?
xml - 同じタイプのネストされた要素のkey/keyrefsを使用してxmlスキーマを作成する方法
私は定期的にいくつかのXMLファイルを処理しており、DTDが提供できるよりも優れた検証を行いたいと考えています。そこで、スキーマについて読み始めて、役立つかどうかを確認しました。これまでのところ、1つのピースを除いて、必要なものとほぼ同じように機能するものを作成することができました。要素の属性を、同じ要素タイプの兄弟要素または祖先要素の別の属性の値に制限できるようにしたい。これは、XMLスキーマのキー/キー参照の制限でも可能ですか?
次のようなドキュメントがあります。
このドキュメントでは、ノードは次のような他のノードを「拡張」できます。
- 兄弟
- 親の兄弟
ただし、ノードは「拡張」しないでください。
- 両親
- 親の兄弟の子ノード
これは、MyHouseがテーブルを「拡張」できることを意味します。これは意味がありませんが、私はそれで問題ありません。
また、両方のハウスノードがDiningRoomという名前の独自のノードを持つことができる必要があることも重要です。
そして、私の現在のスキーマはこれに似ています:
このスキーマは、私が探しているものの一部を実行します。キーをnodeContainerのノードの最初のレベルの名前に設定し、それらのキーを使用して、 nodeContainer以下の任意のレベルの任意のノードを「拡張」できます。そして、それは私がより低いレベルで兄弟を「拡張」したくない限り機能します。上記のサンプルドキュメントは、次の行のために検証されません。
私が作成したスキーマでは、 RoomWithDoorは、 nodeContainerのノードの最初のレベルの一部ではないため、「extends」に割り当てる有効なキーではありません。しかし、それらを有効なキーにするためにキー/キー参照を書く方法はありますか?キー/keyref定義の配置に違いはありますか?私のxpathはあまりにも具体的ですか(どうしてそれらはあまり具体的ではないのですか)?
xml - XSD Key/KeyRefと参照方法
XMLを使用してモデルを定義し、後でコードを生成するために使用します。ファイルは次のようになります。
私が本当に強制したいのは、任意のタグのref-attributeが、alias-tag、obj1-tag、obj2タグ、またはStringやint32などの事前定義された値のnameタグと一致することです。XSDでファイルが持つ必要のある一般的な構造をすでに定義しました。XSDで実現したいことはありますか?
ありがとう
xml - XMLスキーマのkeyrefの問題、おそらく再帰的な要素の問題
さて、私は長い間これに頭をぶつけてきました、私は私の脳をとても傷つけたと思います私はシェイクスピアを忘れました。大丈夫です、私は彼をあまり使いません。これが私の問題です。
xmlドキュメントの上部にフルーツのリストがあります。これは、いわば「ルックアップテーブル」です。
次に、以下のメニューシステムを構築します。各メニューには、さらに多くのメニューまたは製品のリストを含めることができます。これらの製品は、上部の果物に対応している必要があります。
果物のリストが表示されていることを確認できました。また、keyrefを取得してメニューの1つのレベルを検証することもできます。しかし、メニューツリー全体を検証するためにそれを取得することはできません。実行しようとした場所にkeyrefを使用してマークを付けました<!-- KEY FAIL -->
。
検証にxmllintを使用しています。//を含むxpathを実行すると、「コンパイルできません」というメッセージが表示されます。
xmlの例を次に示します。
これがxsdです:
xml - Visual Studio 2010 での XSD キー/keyref インテリセンス検証のサポート
私は答えを探していましたが、見つけることができませんでした:
- Visual Studio 2010 のIntellisenseを介した XSD キー/キー参照の検証サポートはありますか?
- もしそうなら、それを機能させる方法は?
- いいえの場合、Visual Studio に XSD スキーマを持つ XML でキー/参照の検証を行う (組み込みの) 方法はありますか?
ありがとう!
更新:質問は、XSD ファイルを持つ XML を検証する方法に関するものではないことに注意してください。私は、Visual Studio でのキー/キーリファレンス インテリセンス/その他のサポートについて具体的に尋ねていますが、これはまったく追加されていないようです。
xml - key / keyref の XML スキーマバリデーター
キーおよびキー参照違反のエラーを報告するオンライン XML バリデーターはありますか?
たとえば、コアファイリングを使用して試してみると、うまくいきません。key と keyref の仕様を無視しているように思えます。
私が望むのは、スキーマに対して XML インスタンスを検証し、エラーを取得することです
- 重複したキーがある
- キーリファレンスが既存の要素を参照していない
php - XML スキーマに対する XML 検証は、PHP では失敗しますが、.NET (VS2010) では機能します。
私はいくつかの xml ファイルを持っていますが、1 つだけを提示し、それに対して検証した xsd を提示します。最初に問題を説明しましょう。VS2010 でファイルを編集すると、VS ランタイム パーサーは xml ファイルの編集中にエラーを表示しません。次に、xmlファイルをロードしてxmlスキーマに対して検証するphpコマンドラインスクリプトを実行すると、次のような例外で終了します
警告: DOMDocument::schemaValidate(): 要素 'element': キー参照 'elementRef' のキー シーケンス ['answers'] に一致するものが見つかりません。
しかし、xsd ファイルに間違いが見当たりません。
XML ファイル:
xsd ファイルの XML スキーマ:
xml - 再帰的複合型定義内の XML、XSD xs:keyref
上部に許可された型のリストと、許可された型を参照するオブジェクトとサブオブジェクトの再帰的なリスト型を持つ xml データがあります。
このドキュメントを検証するスキーマを次のように定義しました。
oXygen 13.2 で検証すると、次のエラーが表示されます。
これは、xs:unique が定義されている xs:element のサブ要素ではない xs:complexType 定義の子である xs:keyref によるものだと思います。
xs:keyref を ROOT 定義に移動し、XPath を使用して TYPE 要素をターゲットにすることもできますが、 // 構文は許可されていないため、再帰が失われ、ネストのレベルごとに新しい xs:keyref を定義する必要があります。** UPDATE - // XPath の開始時にドットが先行する場合は許可されます! **
私が見逃した解決策はありますか (まだ XSD を使用しています)? 前もって感謝します..
xml - XSD スキーマ参照の整合性 xs:keyref
AccountStructureItem および EventItem タイプの 2 つのリスト (「AccountStructures」および「Events」) を含む Event という名前の xsd があります。AccountStructureItem に SourceId というプロパティがあり、一意かつキーとして定義されています。EventItem タイプには、AccountStructureItem の SourceId への参照である SourceId プロパティもあります。
AccountStructureItem の ID を次のように宣言しました。
この関係は 1 対多であり、同じ AccountStructureItem の SourceId を参照する多くの EventItem が存在する可能性があります。したがって、EventItem のキーは別のプロパティです。
私の質問: 以下の xs:keyref を使用して、accountstructure の accounts_key に keyreference 制約を作成しようとすると、エラーが発生します。
検証に続くエラー メッセージは次のとおりです。
以下に示す完全な XSD とテスト xml ファイルを参照してください。