問題タブ [xml-namespaces]
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 - JAXB Unmarshaller が、インポートされたスキーマで宣言された要素を見つけられないのはなぜですか?
循環依存関係を持つ 2 つのスキーマ A と B があります (これは中間ステップです)。入力として使用している XML ファイルは、xmllint と Visual Studio に従ってスキーマに対して検証されます。Eclipse から、両方のスキーマに同じ名前の 2 つのグローバル コンポーネントが含まれていることがわかります。
A.xsd:
B.xsd:
Unmarshaller に渡す XSD は A.xsd です。B.xsd で定義された要素に遭遇すると、次のように文句を言います。
org.xml.sax.SAXParseException: cvc-elt.1: 要素「foo」の宣言が見つかりません。
(疑似)経由でスキーマを設定しました:
誰かが私が間違っていることを説明できますか? ありがとう。
xml - IE6..IE8 xmlドキュメントで名前空間対応のDOMトラバーサルを実行するにはどうすればよいですか?
SOAPWebサービスと通信するJavaScriptライブラリを実装しています。XMLHttpRequestを使用して、リクエストを実行し、レスポンスを受信します。SOAP応答は、複数の名前空間に大きく依存しています。
Internet Explorerのすべてのバージョンを除くすべての主要なブラウザーで、およびを使用getElementsByTagNameNS()
しgetAttributeNS()
て応答をトラバースおよび解析できます。ただし、InternetExplorerではありません。
今、私はいくつかのドキュメント(http://msdn.microsoft.com/en-us/library/ms756048(VS.85).aspx)を読みました。これは、最初SelectionNamespace
にDOMドキュメント。これは、考慮したい名前空間URI(これは妥当です)と、ドキュメントがたまたま使用する名前空間プレフィックスの両方を知っている場合にのみ機能します。
この最後の要件は完全に不合理に思えます-どの名前空間プレフィックスがたまたま使用されているかをどのように知る必要がありますか?最初は、ドキュメントを完全にトラバースして、すべての名前空間とプレフィックスを追跡できると思いましたが、問題は、プレフィックスとURIの関連付けがドキュメント全体で固定されておらず、どの要素でもドキュメント内のどこでもそれらの関連付けを再定義できることです。私が考えたもう1つのアプローチは、コンテキストノードのすべての祖先を検索して、XPath式を評価する前に、そのノードで有効なプレフィックス/名前空間の組み合わせを見つけることです。これは、すべてのXPath式が並列ではなく直列に実行されます。
もっと良い方法はありますか?IEで名前空間対応のDOMトラバーサルを行うために人々は何を使用していますか?
xml - WebServiceから名前空間を削除します
flexから呼び出される.NetWebサービスがあります。Webサービス関数を呼び出すと、プログラマーは次のxmlを受け取ります。
彼はすべて同じものを取得したいと考えていますが、名前空間は必要ないため、名前空間はありません。.Net部分でどのように行うことができますか?
java - XPath 式は // 要素に対して何も返さないが、 //* カウントを返す
次のサンプル データで XOM を使用しています。
次の要素は、(実際のデータから) 多くの要素を返します。
しかし、何かのような
何も返しません。ルートの子を実行すると、番号が一致しているように見え、要素名を出力すると、すべてが正しく見えます。
HTML を取得し、tagsoup で解析して、結果の文字列から XOM ドキュメントを作成しています。これのどの部分がひどく間違っているのでしょうか? ここで奇妙なエンコーディングの問題が発生しているように感じますが、私はそれを見ていません。Java Strings は文字列ですよね?
c# - Xml 名前空間で Linq to Xml を使用する
私はこのコードを持っています:
theXml の最初の値を使用すると、結果は null になりますが、2 番目の値では適切な値が得られます...
xmlns 値で Linq to Xml を使用するには?
xml - XML::LibXML の使用: 名前空間と子要素を作成し、それらを連携させるにはどうすればよいですか?
私は FOAF と Perl でいくつかのことをしようとしています。現在のソリューションに不満があり、独自のソリューションを展開したいと考えています。以外のモジュールを参照しないでくださいXML::LibXML
。
参考までに、FOAF ファイルのスニペットを以下に示します。
今、空白を除いて、これをXML::LibXML
. ただし、残念ながら最初の行で立ち往生しています。これは最初の行に焦点を当てています:
私はこれを
- element
RDF
、名前空間でrdf
宣言- 値を持つ
rdf
名前空間の属性xmlns
http://www.w3.org/1999/02/22-rdf-syntax-ns#
- 値を持つ
rdfs
名前空間の属性xmlns
http://www.w3.org/2000/01/rdf-schema#
- 値を持つ
foaf
名前空間の属性xmlns
http://xmlns.com/foaf/0.1/
- 値を持つ
admin
名前空間の属性xmlns
http://webns.net/mvcb/
- 値を持つ
最初に要素が必要ですがrdf:RDF
、これは難しいようです。私が見つけたのドキュメントを読んでいますが、これは私が望むことをしていないようです:XML::LibXML::Document
createElementNS()
今、私は試しcreateElement('rdf:RDF')
てみましたが、うまくいきます!ルート要素を取得しましたrdf:RDF
。これがルート要素を作成する方法ですか? XML の読み方が間違っているだけですか?
ここで、属性 (スキーマ宣言) を作成する必要があります。XML::LibXML::Document
文書化が不十分な を試しましたcreateAttributeNS
が、どちらも機能しませんでした:
実際、「属性に新しい名前空間を作成できません!」というエラーが表示されます。これは、メソッド名が意味するものと、ドキュメントの説明「名前空間にバインドされた属性を作成する」と矛盾しているようです。
それで、私はわかりました、私はできませんcreate
、attributeNS
多分私はそれからできset
ますattributeNS
。そして、今回は適用可能と思われる次の文書化された方法に進みますXML::LibXML::Element
: setAttributeNS
.
今回は別のエラーが表示されます: 「ns 属性が正しくありません!」. そこで、いくつかのテストを見直したところ、これには名前空間宣言以外の属性キー値が必要であることがわかりました..これは私が望んでいるものではありません.
考えられる組み合わせと出力は次のとおりです。
XML名前空間に関連していることはわかっていますが、*NSメソッドはどれも機能していないようです。最後に、非 NS バージョンを試します。
私はこれを正しく行っていないという恐ろしい気持ちになります。私はこれを正しく行いましたか?DOM を使用して (を使用せずに) 子要素を追加するにはどうすればよいappendTextChild
ですか?
この全体XML::LibXML
は非常に不十分に文書化されていますが、DOM を使用して高速に XML を作成するために Perl が提供する最高のもののようです。
xml - perlのXML::LibXMLを使用するxmlns属性ではなくXMLプレフィックスをどのように使用しますか?
この質問は、2006年に別のサイトで以前に試みられた可能性があると思います。しかし、私の現在のXML / RDFライター(XML::LibXML
1.70)は、要素の名前空間をxmlns属性の形式で出力します。これにより、名前空間を認識しないパーサーを使用していて、のlook_downを実行する人は除外されfoaf:Person
ます。最初に、これを達成するためのperlの簡単な方法を誰かが知っているかどうか疑問に思いXML::LibXML
ます。または別の方法で。
このようなノード:
この:
本当に次のようになります:
何か案は?どちらにしても技術的には正しいと思いますが、これを知っている他の人に頼りたくはありません。昨日は知らなかった。
xslt - 有効なXHTMLを生成するためのXSLT変換:名前空間の問題
このリソースリンクテキストを見ましたが、MSXMLパーサーを使用して有効なXHTMLドキュメントを生成するのにまだ問題があります。
次のドキュメントを入力しました。
命令を挿入したため、厄介なxmlns=""が生成されます。
変換前に入力ドキュメントを作成するとき。
XSLTは、html要素をキャッチするために使用する変換をインポートします
_standard.xsl内に、関連する変換を行うコードがあります。
それでも、htmlマークアップに必要なxmlnsがありません。
そして、私はまだ厄介なxmlnsをhtmlコードに散在させています:
どこが間違っているのですか?
注:変換にはプルモデルを使用する必要があります。ID変換は使用できません
.net - WCF コントラクト - 名前空間と SerializationExceptions
次の呼び出しと応答を提供するサードパーティの Web サービスを使用しています
と
これは私が書いたコントラクトとサポートタイプです
そして、私のクライアントはこのように見えます
これを実行すると、次の例外が発生します
XmlSerializer を使用して、ルート名 'response' およびルート名前空間 '' (操作 'GetFoo' およびコントラクト ('IFooBarService', ' http://tempuri.org/ ') の場合) を持つ XML 本体を逆シリアル化できません。XML に対応する型が、サービスの既知の型コレクションに追加されていることを確認してください。
GetBar
からの操作をコメントアウトすると、正常に動作しIFooBarService
ます。ここで重要な概念が欠けていることはわかっています。何を探すべきかまったくわかりません。適切に逆シリアル化できるように、コントラクト型を構築する適切な方法は何ですか?
web-services - XSDにtargetNamespaceを導入した後、クライアントがWebサービスからデータを取得しなくなりました
この投稿に情報が多すぎる場合は申し訳ありません。実際の問題に到達する前に、たくさんの話があります。何が悪いのかよくわからないので、関連する可能性のあるものはすべて含めると思いました。
製品データをeコマースサイトに渡すためのWebサービスとクライアント(どちらもVS 2008でC#で記述されています)がありました。XSDは次のように開始されました。
等
クライアントからサービスに送信されるサンプルドキュメントは次のとおりです。
次に、サービスにtargetNamespaceを指定する必要がありました。実際、設定する必要があるかどうかはわかりませんが、(同じVSプロジェクトに)完全に無関係なサービス(名前空間も持たない)のクライアントとして機能するコードを追加しましたが、プロジェクトは追加しませんでした。サービスに名前空間を与えるまでビルドします。
これで、XSDは次のように開始されます。
等
上記のように、すべてのxs:element ref属性を更新して、「ecom」プレフィックスを付けました。これで、プロジェクトが再びビルドされます。
この後、クライアントに変更が必要であることがわかりました。クライアントはSQLストアドプロシージャを使用してXMLを生成します。次に、これはサービスの「get_data」メソッドの正しいタイプのオブジェクトに逆シリアル化されます。オブジェクトのタイプは以前は「eur」でしたが、サービスへのWeb参照を更新した後、「get_dataEur」になりました。そして、XMLの親要素を受け入れるには、「get_dataEur」に変更する必要がありました。次に、奇妙なことに、名前空間を含むxmlns属性を、親要素ではなく「sec」要素(親要素の直接の子)に配置する必要がありました。クライアントからサービスに送信されるサンプルドキュメントは次のとおりです。
サービスのget_dataメソッドで、着信オブジェクトをシリアル化すると、次のように表示されます(親要素は「eur」で、xmlns属性は親要素にあります)。
次に、サービスはクライアントに戻るための応答を準備します。XMLは次のようになります(返送される重要なデータはlast_sent要素のdate_stamp属性です)。
最後に、ここに問題があります!!! クライアントにはデータは表示されません。表示されるのは、内部に何もない親要素だけです。クライアントコードで応答オブジェクトをシリアル化すると、次のようになります。
だから、私の質問は次のとおりです。
クライアントに返信ドキュメントの内容が表示されないのはなぜですか?
どうすれば修正できますか?
送信ドキュメントの親要素ではなく子要素にxmlns属性を配置する必要があるのはなぜですか?
ここにもう少し関連性のある情報があります:
クライアントコード(プレネームスペース)は、次のようにサービスメソッドを呼び出しました。
名前空間が追加された後、次のように変更する必要がありました。