Right now I don't understand the problem, so attempting to suggest a
solution or even an approach to a solution wouldn't make sense for me.
If smeone could please direct me to the documentation for the Standard
FEMA SOA platform and the specific part of Oracle 10g that chokes on
xsd:any, I'll look at it.
This is going to require me to rewind my own head since the last version
of the Oracle DBMS I worked with is 11i and that was at least two years
ago.
However, I advise caution with regard to suggesting a solution. The
reason for caution is that xsd:any is the element we use when we want to
allow implementers to "extend" a given schema, How that is done and what
tools, databases or database management systems are used to do that is
not something we can control or even affect much. I would say offhand
that this is very much an implementation-specific problem for which, no
matter how much we would prefer to be able to provide a solution from
our end, we are necessarily forced to say "we didn't make this problem
and we can't take responsibility for fixing it."
Having said that, I will still try if I can find the documentation for
the Standard FEMA SOA platform and a more complete description of the
specific problem.
Cheers,
Rex
Jacob Westfall wrote:
>> Here is the basic issue we have been having in building a CAP 1.2 implementation. Your help is appreciated. Neil recommends a change to CAP 1.2. I am not sure we want to do that, but we sure do need to find a way to use the "Standard FEMA SOA platform" without having to hand code everything behind the WSDL. So, suggestions are appreciated.
>>
>>
>
> Neil's suggestion would entail creating Signature and EncryptedData elements as containers for the DSig and XMLEnc elements. This of course would change the schema and the specification language, a substantive change, and require a 15 day public review. I don't think this change, creating new elements, fits in the original scope for 1.2, but I had thought of creating a Security container for CAP 2.0 that could be used to hold not only the DSig and Encryption elements but other security related information for the CAP message.
>
> I have included an alternate schema that does not require these containers but also takes a different approach than the current use of <any>. It uses imports and so therefore wasn't the first choice for 1.2 as its less portable. If this implementation problem is isolated then FEMA could use this modified schema as a workaround. The current schema using <any> does validate and works with several different parsers and libs, we'd need more feedback from a multitude of implementors before we could determine if there is indeed a problem that needs correction or is just specific to this implementation only.
>
> Try this out and let me know,
>
>
> <?xml version = "1.0" encoding = "UTF-8"?>
> <schema xmlns = "http://www.w3.org/2001/XMLSchema"
> targetNamespace = "urn:oasis:names:tc:emergency:cap:1.2"
> xmlns:cap = "urn:oasis:names:tc:emergency:cap:1.2"
> xmlns:xs = "http://www.w3.org/2001/XMLSchema"
> xmlns:ds = "http://www.w3.org/2000/09/xmldsig#"
> xmlns:xenc = "http://www.w3.org/2001/04/xmlenc#"
> elementFormDefault = "qualified"
> attributeFormDefault = "unqualified">
> <import namespace = "http://www.w3.org/2000/09/xmldsig#" schemaLocation = "http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/>
> <import namespace = "http://www.w3.org/2001/04/xmlenc#" schemaLocation = "http://www.w3.org/TR/xmlenc-core/xenc-schema.xsd"/>
> <element name = "alert">
> <annotation>
> <documentation>CAP Alert Message (version 1.2)</documentation>
> </annotation>
> <complexType>
> <sequence>
> <element name = "identifier" type = "string"/>
> <element name = "sender" type = "string"/>
> <element name = "sent">
> <simpleType>
> <restriction base = "dateTime">
> <pattern value = "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d[-,+]\d\d:\d\d"/>
> </restriction>
> </simpleType>
> </element>
> <element name = "status">
> <simpleType>
> <restriction base = "string">
> <enumeration value = "Actual"/>
> <enumeration value = "Exercise"/>
> <enumeration value = "System"/>
> <enumeration value = "Test"/>
> <enumeration value = "Draft"/>
> </restriction>
> </simpleType>
> </element>
> <element name = "msgType">
> <simpleType>
> <restriction base = "string">
> <enumeration value = "Alert"/>
> <enumeration value = "Update"/>
> <enumeration value = "Cancel"/>
> <enumeration value = "Ack"/>
> <enumeration value = "Error"/>
> </restriction>
> </simpleType>
> </element>
> <element name = "source" type = "string" minOccurs = "0"/>
> <element name = "scope">
> <simpleType>
> <restriction base = "string">
> <enumeration value = "Public"/>
> <enumeration value = "Restricted"/>
> <enumeration value = "Private"/>
> </restriction>
> </simpleType>
> </element>
> <element name = "restriction" type = "string" minOccurs = "0"/>
> <element name = "addresses" type = "string" minOccurs = "0"/>
> <element name = "code" type = "string" minOccurs = "0" maxOccurs = "unbounded"/>
> <element name = "note" type = "string" minOccurs = "0"/>
> <element name = "references" type = "string" minOccurs = "0"/>
> <element name = "incidents" type = "string" minOccurs = "0"/>
> <element name = "info" minOccurs = "0" maxOccurs = "unbounded">
> <complexType>
> <sequence>
> <element name = "language" type = "language" default = "en-US" minOccurs = "0"/>
> <element name = "category" maxOccurs = "unbounded">
> <simpleType>
> <restriction base = "string">
> <enumeration value = "Geo"/>
> <enumeration value = "Met"/>
> <enumeration value = "Safety"/>
> <enumeration value = "Security"/>
> <enumeration value = "Rescue"/>
> <enumeration value = "Fire"/>
> <enumeration value = "Health"/>
> <enumeration value = "Env"/>
> <enumeration value = "Transport"/>
> <enumeration value = "Infra"/>
> <enumeration value = "CBRNE"/>
> <enumeration value = "Other"/>
> </restriction>
> </simpleType>
> </element>
> <element name = "event" type = "string"/>
> <element name = "responseType" minOccurs = "0" maxOccurs = "unbounded">
> <simpleType>
> <restriction base = "string">
> <enumeration value = "Shelter"/>
> <enumeration value = "Evacuate"/>
> <enumeration value = "Prepare"/>
> <enumeration value = "Execute"/>
> <enumeration value = "Avoid"/>
> <enumeration value = "Monitor"/>
> <enumeration value = "Assess"/>
> <enumeration value = "AllClear"/>
> <enumeration value = "None"/>
> </restriction>
> </simpleType>
> </element>
> <element name = "urgency">
> <simpleType>
> <restriction base = "string">
> <enumeration value = "Immediate"/>
> <enumeration value = "Expected"/>
> <enumeration value = "Future"/>
> <enumeration value = "Past"/>
> <enumeration value = "Unknown"/>
> </restriction>
> </simpleType>
> </element>
> <element name = "severity">
> <simpleType>
> <restriction base = "string">
> <enumeration value = "Extreme"/>
> <enumeration value = "Severe"/>
> <enumeration value = "Moderate"/>
> <enumeration value = "Minor"/>
> <enumeration value = "Unknown"/>
> </restriction>
> </simpleType>
> </element>
> <element name = "certainty">
> <simpleType>
> <restriction base = "string">
> <enumeration value = "Observed"/>
> <enumeration value = "Likely"/>
> <enumeration value = "Possible"/>
> <enumeration value = "Unlikely"/>
> <enumeration value = "Unknown"/>
> </restriction>
> </simpleType>
> </element>
> <element name = "audience" type = "string" minOccurs = "0"/>
> <element name = "eventCode" minOccurs = "0" maxOccurs = "unbounded">
> <complexType>
> <sequence>
> <element ref = "cap:valueName"/>
> <element ref = "cap:value"/>
> </sequence>
> </complexType>
> </element>
> <element name = "effective" minOccurs = "0">
> <simpleType>
> <restriction base = "dateTime">
> <pattern value = "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d[-,+]\d\d:\d\d"/>
> </restriction>
> </simpleType>
> </element>
> <element name = "onset" minOccurs = "0">
> <simpleType>
> <restriction base = "dateTime">
> <pattern value = "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d[-,+]\d\d:\d\d"/>
> </restriction>
> </simpleType>
> </element>
> <element name = "expires" minOccurs = "0">
> <simpleType>
> <restriction base = "dateTime">
> <pattern value = "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d[-,+]\d\d:\d\d"/>
> </restriction>
> </simpleType>
> </element>
> <element name = "senderName" type = "string" minOccurs = "0"/>
> <element name = "headline" type = "string" minOccurs = "0"/>
> <element name = "description" type = "string" minOccurs = "0"/>
> <element name = "instruction" type = "string" minOccurs = "0"/>
> <element name = "web" type = "anyURI" minOccurs = "0"/>
> <element name = "contact" type = "string" minOccurs = "0"/>
> <element name = "parameter" minOccurs = "0" maxOccurs = "unbounded">
> <complexType>
> <sequence>
> <element ref = "cap:valueName"/>
> <element ref = "cap:value"/>
> </sequence>
> </complexType>
> </element>
> <element name = "resource" minOccurs = "0" maxOccurs = "unbounded">
> <complexType>
> <sequence>
> <element name = "resourceDesc" type = "string"/>
> <element name = "mimeType" type = "string" minOccurs = "0"/>
> <element name = "size" type = "integer" minOccurs = "0"/>
> <element name = "uri" type = "anyURI" minOccurs = "0"/>
> <element name = "derefUri" type = "string" minOccurs = "0"/>
> <element name = "digest" type = "string" minOccurs = "0"/>
> </sequence>
> </complexType>
> </element>
> <element name = "area" minOccurs = "0" maxOccurs = "unbounded">
> <complexType>
> <sequence>
> <element name = "areaDesc" type = "string"/>
> <element name = "polygon" type = "string" minOccurs = "0" maxOccurs = "unbounded"/>
> <element name = "circle" type = "string" minOccurs = "0" maxOccurs = "unbounded"/>
> <element name = "geocode" minOccurs = "0" maxOccurs = "unbounded">
> <complexType>
> <sequence>
> <element ref = "cap:valueName"/>
> <element ref = "cap:value"/>
> </sequence>
> </complexType>
> </element>
> <element name = "altitude" type = "string" minOccurs = "0"/>
> <element name = "ceiling" type = "string" minOccurs = "0"/>
> </sequence>
> </complexType>
> </element>
> </sequence>
> </complexType>
> </element>
>
> <element ref = "ds:Signature" minOccurs = "0" maxOccurs = "unbounded" />
> <element ref = "xenc:EncryptedData" minOccurs = "0" maxOccurs = "1" />
>
> </sequence>
> </complexType>
> </element>
> <element name = "valueName" type = "string"/>
> <element name = "value" type = "string"/>
> </schema>
>
>
>
--
Rex Brooks
President, CEO
Starbourne Communications Design
GeoAddress: 1361-A Addison
Berkeley, CA 94702
Tel: 510-898-0670