Yeah, I agree that should work. If I understand correctly, a valid message 
might then look something like:

<READER_EVENT_NOTIFICATION MessageID='0'
  xmlns:param='http://www.llrp.org/ltk/schema/param/encoding/xml/1.0'
  xmlns:llrp='http://www.llrp.org/ltk/schema/core/encoding/xml/1.0'
  xmlns='http://www.llrp.org/ltk/schema/core/encoding/xml/1.0'>
  <param:ReaderEventNotificationData>
    <param:UTCTimestamp>
      <param:Microseconds>2007-03-07T17:01:18.714842</param:Microseconds>
    </param:UTCTimestamp>
    <param:ConnectionAttemptEvent>
      <param:Status>Success</param:Status>
    </param:ConnectionAttemptEvent>
  </param:ReaderEventNotificationData>
</READER_EVENT_NOTIFICATION>

But this definitely would not be the update to version 1.0 of the schema we 
were looking for. Adding a global element definition for each parameter would 
have been backwards compatible and thus would not affect any current 
implementations, so we were hoping to get away with an update to 1.0 rather 
than creating a 1.0.1 or 1.1.

If the resistance to adding global elements in version 1.0 is strong enough, 
then we can just drop the issue and perhaps revisit at the next update to the 
LLRP specification. We've lived with it this long, there's no compelling reason 
to undergo the effort now.

I suppose another option would be to agree to add the global element 
definitions to 1.0 so extensions validate as required, with the understanding 
that a more permanent and aesthetic solution would be created at the next 
update to LLRP (1.1, presumably).

A final, compromise option would be to create a second schema (llrp-global.xsd 
perhaps) that includes (versus imports) the existing llrp.org schema and adds 
the global elements to the core namespace. This way, those who want to avoid 
the global declarations could use the existing llrp.xsd, while schemas that 
require the global elements to validate custom parameters could reference the 
extended llrp-global.xsd. An example xsd is attached.

I will yield to the group's recommendation.

Thanks all for your time,

C
 
-----Original Message-----
From: John R. Hogerhuis [mailto:[email protected]] 
Sent: Thursday, June 04, 2009 12:05 PM
To: LLRP Toolkit Development List
Subject: Re: [ltk-d] Recommended change to llrp-1x0.xsd

Yeah creating a duplicate name in the extending namespace doesn't make
sense either.

I don't know what W3C Schema wants us to do.

Maybe we could refactor the parameters into a separate core
"datatypes" schema where the parameter types are defined with a global
element. Wouldn't that permit the core schema continue to model
Messages as intended. Then our core Messages schema could ref those
elements.

-- John.

------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
llrp-toolkit-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/llrp-toolkit-devel

<?xml version="1.0" encoding="utf-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
           xmlns:llrp="http://www.llrp.org/ltk/schema/core/encoding/xml/1.0";
           xmlns="http://ltk.example.com/ltk/schema/encoding/xml/0.1";
           targetNamespace="http://www.llrp.org/ltk/schema/core/encoding/xml/1.0";
           elementFormDefault="qualified">

  <xs:include schemaLocation="http://www.llrp.org/ltk/schema/core/encoding/xml/1.0/llrp.xsd"/>

    <!-- Parameter top-level elements -->
    <xs:element name="AccessCommand" type="llrp:AccessCommand"/>
    <xs:element name="AccessReportSpec" type="llrp:AccessReportSpec"/>
    <xs:element name="AccessSpecID" type="llrp:AccessSpecID"/>
    <xs:element name="AccessSpecStopTrigger" type="llrp:AccessSpecStopTrigger"/>
    <xs:element name="AccessSpec" type="llrp:AccessSpec"/>
    <xs:element name="AISpecEvent" type="llrp:AISpecEvent"/>
    <xs:element name="AISpecStopTrigger" type="llrp:AISpecStopTrigger"/>
    <xs:element name="AISpec" type="llrp:AISpec"/>
    <xs:element name="AntennaConfiguration" type="llrp:AntennaConfiguration"/>
    <xs:element name="AntennaEvent" type="llrp:AntennaEvent"/>
    <xs:element name="AntennaID" type="llrp:AntennaID"/>
    <xs:element name="AntennaProperties" type="llrp:AntennaProperties"/>
    <xs:element name="C1G2BlockEraseOpSpecResult" type="llrp:C1G2BlockEraseOpSpecResult"/>
    <xs:element name="C1G2BlockErase" type="llrp:C1G2BlockErase"/>
    <xs:element name="C1G2BlockWriteOpSpecResult" type="llrp:C1G2BlockWriteOpSpecResult"/>
    <xs:element name="C1G2BlockWrite" type="llrp:C1G2BlockWrite"/>
    <xs:element name="C1G2_CRC" type="llrp:C1G2_CRC"/>
    <xs:element name="C1G2EPCMemorySelector" type="llrp:C1G2EPCMemorySelector"/>
    <xs:element name="C1G2Filter" type="llrp:C1G2Filter"/>
    <xs:element name="C1G2InventoryCommand" type="llrp:C1G2InventoryCommand"/>
    <xs:element name="C1G2KillOpSpecResult" type="llrp:C1G2KillOpSpecResult"/>
    <xs:element name="C1G2Kill" type="llrp:C1G2Kill"/>
    <xs:element name="C1G2LLRPCapabilities" type="llrp:C1G2LLRPCapabilities"/>
    <xs:element name="C1G2LockOpSpecResult" type="llrp:C1G2LockOpSpecResult"/>
    <xs:element name="C1G2LockPayload" type="llrp:C1G2LockPayload"/>
    <xs:element name="C1G2Lock" type="llrp:C1G2Lock"/>
    <xs:element name="C1G2_PC" type="llrp:C1G2_PC"/>
    <xs:element name="C1G2ReadOpSpecResult" type="llrp:C1G2ReadOpSpecResult"/>
    <xs:element name="C1G2Read" type="llrp:C1G2Read"/>
    <xs:element name="C1G2RFControl" type="llrp:C1G2RFControl"/>
    <xs:element name="C1G2SingulationControl" type="llrp:C1G2SingulationControl"/>
    <xs:element name="C1G2SingulationDetails" type="llrp:C1G2SingulationDetails"/>
    <xs:element name="C1G2TagInventoryMask" type="llrp:C1G2TagInventoryMask"/>
    <xs:element name="C1G2TagInventoryStateAwareFilterAction" type="llrp:C1G2TagInventoryStateAwareFilterAction"/>
    <xs:element name="C1G2TagInventoryStateAwareSingulationAction" type="llrp:C1G2TagInventoryStateAwareSingulationAction"/>
    <xs:element name="C1G2TagInventoryStateUnawareFilterAction" type="llrp:C1G2TagInventoryStateUnawareFilterAction"/>
    <xs:element name="C1G2TagSpec" type="llrp:C1G2TagSpec"/>
    <xs:element name="C1G2TargetTag" type="llrp:C1G2TargetTag"/>
    <xs:element name="C1G2UHFRFModeTableEntry" type="llrp:C1G2UHFRFModeTableEntry"/>
    <xs:element name="C1G2UHFRFModeTable" type="llrp:C1G2UHFRFModeTable"/>
    <xs:element name="C1G2WriteOpSpecResult" type="llrp:C1G2WriteOpSpecResult"/>
    <xs:element name="C1G2Write" type="llrp:C1G2Write"/>
    <xs:element name="ChannelIndex" type="llrp:ChannelIndex"/>
    <xs:element name="ConnectionAttemptEvent" type="llrp:ConnectionAttemptEvent"/>
    <xs:element name="ConnectionCloseEvent" type="llrp:ConnectionCloseEvent"/>
    <xs:element name="Custom" type="llrp:Custom"/>
    <xs:element name="EPC_96" type="llrp:EPC_96"/>
    <xs:element name="EPCData" type="llrp:EPCData"/>
    <xs:element name="EventNotificationState" type="llrp:EventNotificationState"/>
    <xs:element name="EventsAndReports" type="llrp:EventsAndReports"/>
    <xs:element name="FieldError" type="llrp:FieldError"/>
    <xs:element name="FirstSeenTimestampUptime" type="llrp:FirstSeenTimestampUptime"/>
    <xs:element name="FirstSeenTimestampUTC" type="llrp:FirstSeenTimestampUTC"/>
    <xs:element name="FixedFrequencyTable" type="llrp:FixedFrequencyTable"/>
    <xs:element name="FrequencyHopTable" type="llrp:FrequencyHopTable"/>
    <xs:element name="FrequencyInformation" type="llrp:FrequencyInformation"/>
    <xs:element name="FrequencyRSSILevelEntry" type="llrp:FrequencyRSSILevelEntry"/>
    <xs:element name="GeneralDeviceCapabilities" type="llrp:GeneralDeviceCapabilities"/>
    <xs:element name="GPIEvent" type="llrp:GPIEvent"/>
    <xs:element name="GPIOCapabilities" type="llrp:GPIOCapabilities"/>
    <xs:element name="GPIPortCurrentState" type="llrp:GPIPortCurrentState"/>
    <xs:element name="GPITriggerValue" type="llrp:GPITriggerValue"/>
    <xs:element name="GPOWriteData" type="llrp:GPOWriteData"/>
    <xs:element name="HoppingEvent" type="llrp:HoppingEvent"/>
    <xs:element name="Identification" type="llrp:Identification"/>
    <xs:element name="InventoryParameterSpecID" type="llrp:InventoryParameterSpecID"/>
    <xs:element name="InventoryParameterSpec" type="llrp:InventoryParameterSpec"/>
    <xs:element name="KeepaliveSpec" type="llrp:KeepaliveSpec"/>
    <xs:element name="LastSeenTimestampUptime" type="llrp:LastSeenTimestampUptime"/>
    <xs:element name="LastSeenTimestampUTC" type="llrp:LastSeenTimestampUTC"/>
    <xs:element name="LLRPCapabilities" type="llrp:LLRPCapabilities"/>
    <xs:element name="LLRPConfigurationStateValue" type="llrp:LLRPConfigurationStateValue"/>
    <xs:element name="LLRPStatus" type="llrp:LLRPStatus"/>
    <xs:element name="OpSpecID" type="llrp:OpSpecID"/>
    <xs:element name="ParameterError" type="llrp:ParameterError"/>
    <xs:element name="PeakRSSI" type="llrp:PeakRSSI"/>
    <xs:element name="PerAntennaAirProtocol" type="llrp:PerAntennaAirProtocol"/>
    <xs:element name="PerAntennaReceiveSensitivityRange" type="llrp:PerAntennaReceiveSensitivityRange"/>
    <xs:element name="PeriodicTriggerValue" type="llrp:PeriodicTriggerValue"/>
    <xs:element name="ReaderEventNotificationData" type="llrp:ReaderEventNotificationData"/>
    <xs:element name="ReaderEventNotificationSpec" type="llrp:ReaderEventNotificationSpec"/>
    <xs:element name="ReaderExceptionEvent" type="llrp:ReaderExceptionEvent"/>
    <xs:element name="ReceiveSensitivityTableEntry" type="llrp:ReceiveSensitivityTableEntry"/>
    <xs:element name="RegulatoryCapabilities" type="llrp:RegulatoryCapabilities"/>
    <xs:element name="ReportBufferLevelWarningEvent" type="llrp:ReportBufferLevelWarningEvent"/>
    <xs:element name="ReportBufferOverflowErrorEvent" type="llrp:ReportBufferOverflowErrorEvent"/>
    <xs:element name="RFReceiver" type="llrp:RFReceiver"/>
    <xs:element name="RFSurveyEvent" type="llrp:RFSurveyEvent"/>
    <xs:element name="RFSurveyReportData" type="llrp:RFSurveyReportData"/>
    <xs:element name="RFSurveySpecStopTrigger" type="llrp:RFSurveySpecStopTrigger"/>
    <xs:element name="RFSurveySpec" type="llrp:RFSurveySpec"/>
    <xs:element name="RFTransmitter" type="llrp:RFTransmitter"/>
    <xs:element name="ROBoundarySpec" type="llrp:ROBoundarySpec"/>
    <xs:element name="ROReportSpec" type="llrp:ROReportSpec"/>
    <xs:element name="ROSpecEvent" type="llrp:ROSpecEvent"/>
    <xs:element name="ROSpecID" type="llrp:ROSpecID"/>
    <xs:element name="ROSpecStartTrigger" type="llrp:ROSpecStartTrigger"/>
    <xs:element name="ROSpecStopTrigger" type="llrp:ROSpecStopTrigger"/>
    <xs:element name="ROSpec" type="llrp:ROSpec"/>
    <xs:element name="SpecIndex" type="llrp:SpecIndex"/>
    <xs:element name="TagObservationTrigger" type="llrp:TagObservationTrigger"/>
    <xs:element name="TagReportContentSelector" type="llrp:TagReportContentSelector"/>
    <xs:element name="TagReportData" type="llrp:TagReportData"/>
    <xs:element name="TagSeenCount" type="llrp:TagSeenCount"/>
    <xs:element name="TransmitPowerLevelTableEntry" type="llrp:TransmitPowerLevelTableEntry"/>
    <xs:element name="UHFBandCapabilities" type="llrp:UHFBandCapabilities"/>
    <xs:element name="Uptime" type="llrp:Uptime"/>
    <xs:element name="UTCTimestamp" type="llrp:UTCTimestamp"/>

</xs:schema>

------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
llrp-toolkit-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/llrp-toolkit-devel

Reply via email to