0

プロジェクト終了の前日、複雑な問題が発生しました。wtf サービスとそれを使用する 3 つのクライアント アプリケーションがあります。service には 3 つのメソッドがあり、それぞれが引数として xml ドキュメントを受け取り、xml ドキュメントを返します。これが彼らのコミュニケーション方法です。生成および受信したxmlを検証するためのxsdファイルがいくつかあります。今日まで、すべてがうまくいきました。私はポーランド語のウィンドウを持っていますが、今日は英語のウィンドウでアプリケーションを実行しています。ここまででお気づきかもしれませんが、受信した xml が無効であるというメッセージをアプリケーションから受け取りました。私はそれをチェックし、XMLで2倍になると想定されていたVaR値がピリオドで書かれていました(またはcoma、覚えていませんが、機能していませんでした)。私は今疑問に思っています - この問題に対する良い解決策はありますか? つまり、次のように xml を検証します。

public bool IsValid(XDocument xmlDocument, Stream xsdContent)
        {
            XmlSchemaSet schemaSet = new XmlSchemaSet();
            XmlReader reader = XmlReader.Create(xsdContent);
            schemaSet.Add(string.Empty, reader);

            valid = true;
            xmlDocument.Validate(schemaSet, (sender, eventt) => { valid = false; e
= eventt; });

            return valid;
        }

double のセパレーターがどうあるべきかをバリデーターに伝える方法はありません。私が考えることができる唯一の解決策は、問題のある VaR 値が文字列であることを xsd で指定し、ピリオドまたはコンマを使用して倍数であるかどうかをプログラムで確認することです。

4

1 に答える 1

2

XML スキーマの仕様では、浮動小数点数はカンマではなくピリオドを使用して表現されることが指定されています。ロケールは、何が有効な XML であるかには影響しません。

エラーを含めません。うまくいけば、数字にコンマがあると不平を言っています。

于 2009-01-08T19:08:28.733 に答える