[jsdl-wg] XSD Schema - latest

Yuri Demchenko demch at science.uva.nl
Tue Mar 15 05:09:18 CST 2005


Andrew Stephen McGough wrote:
> 
> Here is the latest XSD schema. Think I've got all the new stuff in that
> people wanted.
> 
> I'll add it to sourceforge.
> 
Look good.

However, for my first look schema presentation needs some optimisation 
on the following issues:

1) consider moving some of child elements to attribute

Rationale: this actually should improve readability and programming

2) consider moving attributes definition/enumeration to the end of the 
schema - for better readability

3) consider having all elements' name capitalised and attributes 
preferably starting from small letter

4) consider moving enumerated elements like LimitTypeEnumeration or 
OSenumeration to attributes

5) consider defining element in a form of data "typing"

Example:

<xs:element name="Credentials" type="iodef-xws:CredentialsType"/>
<xs:complexType name="CredentialsType">
   <xs:sequence>
     <xs:element ref="iodef-xws:CredentialData" minOccurs="0" 
maxOccurs="unbounded"/>
     <xs:element ref="iodef-xws:CredentialConfirmation" minOccurs="0"/>
     <xs:element ref="iodef-xws:CredentialStorage" minOccurs="0"/>
   </xs:sequence>
   <xs:attribute ref="iodef:restriction" default="default"/>
   <xs:attribute ref="iodef-xws:credstatus" use="required"/>
</xs:complexType>

Rationale: It will make software generation and further document 
validation more straitforward and compatible with existing tools.

This is based on our experience.

6) consider where you can avoid using			<xsd:anyAttribute 
namespace="##other" processContents="lax"/>

Practice shows that attribute should have clear name and definition. 
However, its semantics/meaning can be typically defined by 
type="anyURI" and consequently you can use externally maintained 
registry specific for your application and namespace.

Example (typical for SAML and XACML):

<NameIdentifier 
Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" 
NameQualifier="cnl:subject:customer">WHO740 at users.collaboratory.nl</NameIdentifier>

7) consider making OS more flexible and more light

Rationale: actually OS specs in most cases is enumerated, so no need 
to have it as an element, however you need more information like 
vendor, name, version, patch.

Possible format - element "OperatingSystem" may be empty

<xs:element name="OperatingSystem">
   <xs:complexType>
     <xsd:sequence>
       <xsd:element name="Description" type="jsdl:description" 
minOccurs="0"/>
     </xsd:sequence>
     <xs:attribute name="vendor" type="xs:string"/>
     <xs:attribute name="name" type="xs:string"/>
     <xs:attribute name="version" type="xs:string"/>
     <xs:attribute name="patch" type="xs:string"/>
   </xs:complexType>
</xs:element>

8) the same approach can be applied to the Limit element and some other

8) consider changing the User element definition and consider the 
following issues:

- How ExecutionUserID relates to UserCredential
* is nameId the same?
* how they are connected semantically and cryptographically?
* who assigns user groups and they are confirmed

Possible solution - three components User/Principal nameID, 
Credentials (that cryptographically confirm nameID and/or contain own 
ConfirmationData) and Attributes where you can put all non-ID data

<xs:element name="Principal" type="jsdl:PrincipalType"/>
<xs:complexType name="PrincipalType">
   <xs:sequence>
     <xs:element ref="jsdl:NameIdentifier"minOccurs="0"/>
     <xs:element ref="jsdl:Credentials" minOccurs="0" 
maxOccurs="unbounded"/>
     <xs:element ref="jsdl:Attributes" minOccurs="0"/>
   </xs:sequence>
   <xs:attribute ref="jsdl:principalcat" default="other"/>
</xs:complexType>

----

Hope this will have some value for you.

We are considering using JSDL format in some our projects and 
following JSDL development.

Regards,

Yuri

P.S. Example of XMLWebService definition for Grid Security Incident 
definition you can find in IODEF-XWS profile at
http://www.uazone.org/demch/projects/iodef/draft-ietf-inch-iodef-042-xws.xsd
http://www.uazone.org/demch/projects/iodef/index.html






More information about the jsdl-wg mailing list