10

私の知る限り、XML 要素の型名と属性名は大文字と小文字が区別されます。

大文字と小文字を区別しない要素を取得する方法やトリックはありますか?

明確化: 一部のクライアントがデータをアップロードするために使用される XSD を介して文法が定義されています。ユーザー (コンテンツ ジェネレーター) はさまざまなツールを使用して XML ファイルを作成していますが、その多くはプレーン テキスト エディターなどを使用しています。この人々がファイルをアップロードしようとすると、非互換性エラーが発生することがあります。タグが大文字と小文字を区別することは常に明らかでしたが、lowerCase と upperCase のタグを混在させるのはよくあるエラーです。

この文法を定義する XSD ファイルにアクセスでき、それを変更できます。問題は、このエラーが発生しやすい小文字/大文字のタグの問題を回避する方法です。

何か案が?

前もって感謝します!

4

7 に答える 7

5

私があなたの問題を正しく理解している場合、大文字と小文字のエラーは、サードパーティの解析ツールによる作成とアップロードの間にのみ修正できます。

すなわち、XML ファイル > XSD に対して解析され、修正された > アップロードが承認された

クライアントが XML ファイルを作成するコンテナ アプリケーションを開発することで、実行時にこれを行うことができます。または、アップロードされたファイルを取得して構文をチェックするアプリケーションをサーバー側で作成することもできます。いずれにせよ、決定を下してから、いくつかの作業を行う必要があります!!

多くは問題の規模に依存します。たとえば、XSD にさまざまなケースで同様のタグがあり、受信している場合は、ノード カウントなどに基づく複雑なソリューションが必要になります。

小文字のタグのみを含む XSD に対してランダムなケースを使用するクライアントに純粋にこだわっている場合は、ファイルを解析し、すべてのタグを一度に小文字に変換できるはずです。これは、タグ間のコンテンツがマルチケースであり、ドキュメント全体を変換できないことを前提としています。

これを行う方法は、状況のメカニズムによって異なります。明らかに、クライアントに自分の提出物をエラーチェックさせる方が簡単です。これが現実的でない場合は、エラーが発生する前にファイルを正しい形式に変換できるプロセスの機会を特定する必要があります。

これについては、ここで議論するにはあまりにも多くの方法があります。それは主に、スキルセットまたは利用可能な資金に依存します。

于 2009-05-15T14:38:20.840 に答える
2

シンプルなソリューションは、ユーザーからxmlをロードするときにすべてのタグ/属性を小文字に送信し、すべての小文字のタグ/属性用に設計されたxsdでのみチェックすることです

于 2014-08-17T03:42:24.053 に答える
1

理論的には、XML スキーマをハッキングして、大文字が正しく使われていない要素名を検証することができます。

これは、XML スキーマの置換グループメカニズムを使用して実行できます。たとえば、スキーマで次のように定義されているとします。

  <xsd:element name="foobar" type="xsd:string"/>

次に、XML スキーマに次を追加できます。

  <xsd:element name="Foobar" type="xsd:string" substitutionGroup="foobar"/>
  <xsd:element name="FooBar" type="xsd:string" substitutionGroup="foobar"/>
  <xsd:element name="fooBar" type="xsd:string" substitutionGroup="foobar"/>
  <xsd:element name="FOOBAR" type="xsd:string" substitutionGroup="foobar"/>

彼らが犯す可能性のある間違いを予測しようとします。各要素には、2^n 通りの組み合わせが考えられます。ここで、n は名前の長さです (名前の各文字が文字であると仮定します)。

実際には、これは面倒であり、問​​題を解決するどころか遅らせるだけであり、おそらくうまくいかないでしょう。XML で大文字と小文字が区別されることをユーザーが認識していない場合、開始タグの大文字と小文字が一致する終了タグがなく、検証に失敗する可能性があります。

他の人が言ったように、送信された入力を前処理してケースを修正するか、ユーザーが送信する前に正しい入力を作成できるようにします。

于 2009-12-15T13:12:56.900 に答える
1

@Melkisadek が言ったように、XSD 検証は目的のために存在します。ユーザーが無効な XML を含むファイルをアップロードできるようにすると、アプリケーションは、それらのファイル内のデータにアクセスした時点で失敗することになります。さらに、XSD で入力 XML スキーマを検証するという目的全体が無効になります。スキーマ検証機能全体を放棄する場合は、XSLT を使用して、必要に応じてすべてのタグを大文字または小文字に変換する必要があります (@Rashmi の回答を参照)。

これは、ユーザーが特殊文字をより快適に入力できるという理由だけで、ユーザーが社会保障番号の入力フィールドに特殊文字を入力できるようにすることに似ています (はい、この例はばかげており、これ以上の例は考えられませんでした!)

したがって、私の考えでは、解決策はスキーマの検証をそのまま維持することですが、ユーザーがアップロードする前にスキーマを検証する方法を提供することです。たとえば、これが Web アプリの場合、Javascript を使用してスキーマに対してファイルを検証するボタンをページに提供できます。または、ファイルがアップロードされたときにのみサーバーで検証します。どちらの場合も、エラーのあるエンティティがある行番号、文字の位置、エラーのフラグを立てた理由など、適切なフィードバックを提供してください。

于 2009-05-15T17:00:52.243 に答える
0

アップロード後、XML ファイルを (DOM または SAX 経由で) 調べて、検証する前に大文字と小文字を修正しますか?

于 2009-05-20T17:07:31.850 に答える