Skip to Content.
Sympa Menu

perfsonar-dev - Schema defining the same element on the same level twice

Subject: perfsonar development work

List archive

Schema defining the same element on the same level twice


Chronological Thread 
  • From: Jochen Reinwand <>
  • To: "" <>
  • Subject: Schema defining the same element on the same level twice
  • Date: Thu, 7 Jun 2007 16:14:36 +0200

Hi all,

For those attending the JRA1 Meeting: Find attached an example of a Schema
defining the same element on the same level twice. The file
metadataKeyResponse-orig.rnc is the file Michalis sent me, because it could
not be loaded in soapUI. I changed it to make it possible (see the file
metadataKeyResponse.rnc).
The problem: You will find the element nmwg:metadata defined twice in the
first file.

regards,
Jochen

--
Jochen Reinwand Tel: +49 9131 852-8689
DFN Labor

Regionales Rechenzentrum Erlangen
Martensstrasse 1
91058 Erlangen

email:

# Version = $Id:$
# Author = loukik


namespace nmwg="http://ggf.org/ns/nmwg/base/2.0/";
namespace nmwgtopo3="http://ggf.org/ns/nmwg/topology/base/3.0/";
namespace nmtl2="http://ggf.org/ns/nmwg/topology/l2/3.0/"; 
namespace select="http://ggf.org/ns/nmwg/ops/select/2.0/";
namespace nmwgr="http://ggf.org/ns/nmwg/result/2.0/";

start = element nmwg:message { MessageContent }

MessageContent =
        Identifier? &
        MessageIdentifierRef? &
        Type &
        (
                (Metadata+ |ResultCodeMetadata)&
                Data+
        )

Identifier =
        attribute id { xsd:string }

MessageIdentifierRef =
        attribute messageIdRef { xsd:string }

Type =
        attribute type { "MetadataKeyResponse" }

Metadata=
        element nmwg:metadata {
                (
                        Identifier &
                        MetadataIdentifierRef? &
			SubjectMetadata? &
			Parameters?
                )
        }

MetadataIdentifierRef =
        attribute metadataIdRef { xsd:string }

SubjectMetadata=
	element nmwg:subject {
		Identifier &
		(
			element nmwgtopo3:node {
               			Identifier&
				element nmwgtopo3:name{
                                	attribute type {"logical"}&
                                	xsd:string
                        	}? &
				element nmwgtopo3:country{xsd:string}? &
				element nmwgtopo3:city{xsd:string}? &
				element nmwgtopo3:institution{xsd:string}? &		
				element nmwgtopo3:latitude{xsd:string}? &
				element nmwgtopo3:longitude{xsd:string}? &
				element nmwgtopo3:type{"TopologyPoint"}?
			}+ 
			| element nmtl2:link {
				Identifier &
				element nmtl2:name {
                                	attribute type{"logical"}&
                                	text
                        	}&
				element nmtl2:globalName {
                                        attribute type{"logical"}&
                                        text
                                }&
                        	element nmtl2:type {xsd:string}? &
				element nmwgtopo3:node {
                                	Identifier &
                                	attribute nodeIdRef{xsd:string} &
                                	element nmwgtopo3:role{"DemarcPoint"|"EndPoint"}?
                        	}*	
               		}
		)
	}


Parameters = 
	element nmwg:parameters {
		Identifier &
		element nmwg:parameter {
			attribute name {xsd:string} & 
			attribute value {xsd:string}? &
			xsd:string
		}+
	}

ResultCodeMetadata =
        element nmwg:metadata {
                attribute id {xsd:string},
                element nmwg:eventType {text}
        }


Data = (KeyData|ResultCodeData)

KeyData =
        element nmwg:data
        {
                Identifier &
                MetadataIdentifierRef &
                Key
        }

Key =
        element nmwg:key
        {
                attribute id {xsd:string}?,
                Parameters
        }

ResultCodeData =
        element nmwg:data {
                attribute id {xsd:string},
                attribute metadataIdRef {xsd:string},
                element nmwgr:datum { text }
        }

# Version = $Id:$
# Author = loukik


namespace nmwg="http://ggf.org/ns/nmwg/base/2.0/";
namespace nmwgtopo3="http://ggf.org/ns/nmwg/topology/base/3.0/";
namespace nmtl2="http://ggf.org/ns/nmwg/topology/l2/3.0/"; 
namespace select="http://ggf.org/ns/nmwg/ops/select/2.0/";
namespace nmwgr="http://ggf.org/ns/nmwg/result/2.0/";

start = element nmwg:message { MessageContent }

MessageContent =
        Identifier? &
        MessageIdentifierRef? &
        Type &
        (
                (Metadata+ |ResultCodeMetadata)&
                Data+
        )

Identifier =
        attribute id { xsd:string }

MessageIdentifierRef =
        attribute messageIdRef { xsd:string }

Type =
        attribute type { "MetadataKeyResponse" }

Metadata=
        element nmwg:metadata {
                (
                        Identifier &
                        MetadataIdentifierRef? &
			SubjectMetadata? &
			Parameters? &
                        EventType?
                )
        }

MetadataIdentifierRef =
        attribute metadataIdRef { xsd:string }

SubjectMetadata=
	element nmwg:subject {
		Identifier &
		(
			element nmwgtopo3:node {
               			Identifier&
				element nmwgtopo3:name{
                                	attribute type {"logical"}&
                                	xsd:string
                        	}? &
				element nmwgtopo3:country{xsd:string}? &
				element nmwgtopo3:city{xsd:string}? &
				element nmwgtopo3:institution{xsd:string}? &		
				element nmwgtopo3:latitude{xsd:string}? &
				element nmwgtopo3:longitude{xsd:string}? &
				element nmwgtopo3:type{"TopologyPoint"}?
			}+ 
			| element nmtl2:link {
				Identifier &
				element nmtl2:name {
                                	attribute type{"logical"}&
                                	text
                        	}&
				element nmtl2:globalName {
                                        attribute type{"logical"}&
                                        text
                                }&
                        	element nmtl2:type {xsd:string}? &
				element nmwgtopo3:node {
                                	Identifier &
                                	attribute nodeIdRef{xsd:string} &
                                	element nmwgtopo3:role{"DemarcPoint"|"EndPoint"}?
                        	}*	
               		}
		)
	}


Parameters = 
	element nmwg:parameters {
		Identifier &
		element nmwg:parameter {
			attribute name {xsd:string} & 
			attribute value {xsd:string}? &
			xsd:string
		}+
	}

ResultCodeMetadata = Metadata

EventType =
  element nmwg:eventType { xsd:string }


Data =
        element nmwg:data
        {
                Identifier &
                MetadataIdentifierRef &
                ( Key | ResultCodeData )
        }

Key =
        element nmwg:key
        {
                attribute id {xsd:string}?,
                Parameters
        }

ResultCodeData =
        element nmwg:data {
                attribute id {xsd:string},
                attribute metadataIdRef {xsd:string},
                element nmwgr:datum { text }
        }



  • Schema defining the same element on the same level twice, Jochen Reinwand, 06/07/2007

Archive powered by MHonArc 2.6.16.

Top of Page