0

着信 xml ドキュメントを解析するための xml スキーマを設計しました。受信場所は 2 つのフィードから xml ドキュメントを取得します。そのうちの 1 つがドキュメント内のノードのスペルを間違えています。「Rookie」ではなく「Roookie」です。既存の xsd でこのドキュメントを解析する方法はありますか?

4

4 に答える 4

2

次の単純な XSL スタイルシートのように、間違った XML ファイルを前処理する可能性があります。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" indent="no"/>

<xsl:template match="Roookie">
        <Rookie>
                <xsl:apply-templates select="@*|node()" />
        </Rookie>
</xsl:template>

<xsl:template match="@*|node()" name="defaultRule">
        <xsl:copy>
                <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
</xsl:template>

</xsl:stylesheet>
于 2008-11-19T21:31:09.170 に答える
0

ドキュメント内の要素を置き換えるか、新しいドキュメント形式で動作するように xsd を変更する必要があります。

于 2008-11-19T21:21:03.260 に答える
0

Rookie という名前の 1 つのノードではなく、2 つのノード (Rookie または Roookie) の間の選択を受け入れるようにスキーマを変更するだけです。どちらのノードも同じタイプです。もちろん、Roo(o)kie に複雑なコンテンツがある場合は、2 つの要素の構造全体が重複しないように、このコンテンツに対して複合型を宣言する必要があります。

于 2008-11-19T21:30:18.250 に答える
0

ここでの唯一の答えは、悪いメッセージを修正することです。xsd はコントラクトであり、システムをサブミットする際に遵守する必要があります。サブミットするシステムをこのように制御できない場合は、新しい名前で 2 つ目のスキーマを作成し、スペル ミスに対応できるようにすることをお勧めします。メッセージのミスごとにコントラクト/xsd を変更し始めると、複雑さが増し、保守性が低下します。

于 2008-12-05T03:38:51.420 に答える