質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.35%

  • XML

    525questions

    XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

  • XSD

    4questions

    XSDは一般的に、XMLドキュメントの特定のタイプの表現を含んだ、W3C XML Schemaフォーマットで書かれたドキュメントを指します。

【XMLSchema】prefixのついたelementタグの妥当性検証について

受付中

回答 0

投稿 2017/11/20 13:39 ・編集 2017/11/20 13:42

  • 評価
  • クリップ 0
  • VIEW 38

irohamaru

score 3

xsdの書き方について質問です。

以下のようなXMLに対して、妥当性検証を行ったところ、
「cvc-complex-type.2.4.a: 要素'dsig:Signature'で始まる無効なコンテンツが見つかりました。」
というエラーが出てしまいました。

XSDに慣れておらず、<xsd:element name="Signature" type="SignatureType"/>の箇所を
<xsd:element name="dsig:Signature" type="SignatureType"/>にしてみたりしましたが、今度は

  • s4s-att-must-appear: 属性 'name' は要素 'element' に現れなければなりません。
  • s4s-att-invalid-value: Invalid attribute value for 'name' in element 'element'. Recorded reason: cvc-datatype-valid.1.2.1: 'dsig:Signature' is not a valid value 
    for 'NCName'.

というエラーが出てしまい、うまくいきませんでした。

このXMLの妥当性チェックが通るためには、XSDをどのように修正すればよいでしょうか。
(本来はXSDに合った形のXMLを出力すべきですが、暫定対応でXSDを修正しようと思っています)

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://xml.XXXXXX.jp/XXX/XXXXXX.xsl"?>
<AAA xmlns="http://xml.XXXXXX.jp/XXX/aaaaaa" xmlns:gen="http://xml.XXXXXX.jp/XXX/XXXXXX" VR="1.0">

  (中略)

  <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="a">
    <dsig:SignedInfo>
      <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
      <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
      <dsig:Reference URI="#ZZZZZZ">
        <dsig:Transforms>
          <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
        </dsig:Transforms>
        <dsig:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
        <dsig:DigestValue>V3hmkO0FK8ICbtl87y76kpxfKE+qUmKFfNDYeuR85+A=</dsig:DigestValue>
      </dsig:Reference>
    </dsig:SignedInfo>
    <dsig:SignatureValue>te0OoWWC2H1..</dsig:SignatureValue>
    <dsig:KeyInfo>
      <dsig:X509Data>
        <dsig:X509Certificate>MIIDkjCCAnqgA..</dsig:X509Certificate>
      </dsig:X509Data>
    </dsig:KeyInfo>
  </dsig:Signature>
</TEG700>

妥当性チェックを行うXSD

<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema targetNamespace="http://xml.XXXXXX.jp/XXX/aaaaaa"
xmlns="http://xml.XXXXXX.jp/XXX/aaaaaa" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
xmlns:gen="http://xml.XXXXXX.jp/XXX/XXXXXX" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0" >
<xsd:annotation>
<xsd:documentation>
version:1.0
Date:2017年MM月DD日
</xsd:documentation>
</xsd:annotation>

<!-- version -->
<xsd:simpleType name="AAA-1-0VRtype"><xsd:restriction base="xsd:string"><xsd:enumeration value="1.0"/></xsd:restriction></xsd:simpleType>
<!-- Root Element Definition -->
<xsd:element name="AAA" type="AAA-1-0type"/>

<xsd:complexType name="AAA-1-0type">
<xsd:sequence>

<xsd:element name="BBB00000" type="BBB00000-1-0Rtype" minOccurs="0">
<xsd:annotation>
<xsd:appinfo>"テスト"</xsd:appinfo>
</xsd:annotation>
</xsd:element>

(中略)

<!-- XML-SIGNATURE -->
<xsd:element ref="Signature" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="VR"
type="AAA-1-0VRtype"
use="required"/>
<xsd:attributeGroup ref="FormAttribute" />
</xsd:complexType>

<xsd:element name="Signature" type="SignatureType"/>
<xsd:complexType name="SignatureType">
    <xsd:sequence>
        <xsd:element ref="SignedInfo" />
        <xsd:element ref="SignatureValue" />
        <xsd:element ref="KeyInfo" minOccurs="0" />
        <xsd:element ref="Object" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
    <xsd:attribute name="Id" type="xsd:ID" use="required" />
</xsd:complexType>

(以下省略)
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.35%

関連した質問

同じタグがついた質問を見る

  • XML

    525questions

    XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

  • XSD

    4questions

    XSDは一般的に、XMLドキュメントの特定のタイプの表現を含んだ、W3C XML Schemaフォーマットで書かれたドキュメントを指します。