Re: Comments on "XML-Signature Syntax and Processing"

Joseph,

Thanks for your reply.

> >2) Differences between the two versions
> 
> The first two are fairly close:
> 
> >- Permissible contents of MgmtData are very different.
> 
> <element name="MgmtData" type="string"/>
> 
> <!ELEMENT MgmtData (#PCDATA)>
>
> >- Permissible contents of KeyName are very different.
> 
> <element name="KeyName" type="string"/>
> 
> <!ELEMENT KeyName (#PCDATA) >

The body of the CR has the above dcl, but the DTD actually uses
%Key.ANY;.

<!ELEMENT MgmtData	%Key.ANY; >
<!ELEMENT KeyName	%Key.ANY; >

> The rest differ, with the schema definition being normative and the DTD 
> being structured such that we provide a few 'foo.ANY' entities to emulate 
> schema's <any/> that need to be modified by the application for it's context.

Thanks for your clarification.  I now understand the motivation.  But
I am still confused.

In my understanding, KeyValue have either DSAKeyValue, RSAKeyValue, or 
elements of foreign namespaces.

> >- Permissible contents of KeyValue are very different.
> 
> <element name="KeyValue" type="ds:KeyValueType"/>
>     <complexType name="KeyValueType" mixed="true">
>       <choice>
>         <any namespace="##other" processContents="lax" minOccurs="0"
>          maxOccurs="unbounded"/>
>         <element name="DSAKeyValue" type="ds:DSAKeyValueType"/>
>         <element name="RSAKeyValue" type="ds:RSAKeyValueType"/>
>       </choice>
>     </complexType>

But your DTD allows several element types of the very namespace 
"http://www.w3.org/2000/09/xmldsig#".  Is this really intended?

> <!ELEMENT KeyValue %Key.ANY; >
> <!ENTITY % Key.ANY '(#PCDATA|KeyName|KeyValue|RetrievalMethod| 
> X509Data|PGPData|MgmtData|DSAKeyValue|RSAKeyValue)*'>

> We could create an few more Key*.ANY entities (like a KeyValue.ANY) but 
> given applications (if they are using the DTD) will need to tweak these 
> anyway, unless someone advocated it, I wasn't going to make an issue of it.

I would rather write:

<!ENTITY % Key.ANY "(%ForeignKeyValue; DSAKeyValue|RSAKeyValue)*">
<!ENTITY % ForeignKeyValue "">

and allow users to redefine ForeignKeyValue.  For example:

<!ENTITY % ForeignKeyValue "foo:NewKeyValue | ">

> >- Permissible contents of SignatureProperty are very different.
> 
> Again:
>          <!ELEMENT SignatureProperty %SignatureProperty.ANY >
> is the best we've been able to come up with for emulating the schema <any/>, 
> this requires the application designer to tweak the %SignatureProperty.ANY 
> entity as approriate.
> 
> If you have any suggestions for improvements on this approach, please let us 
> know!

Hope this helps.  I think that use of placeholder parameter entities is 
a very standard technique for DTD authoring.


Cheers,


IBM Tokyo Research Lab &
International University of Japan, Research Institute

MURATA Makoto

Received on Wednesday, 13 December 2000 08:57:48 UTC