2009-06-21 10 views
10

Próbuję utworzyć schemat XML, który umożliwia zapisanie wartości atrybutu jako identyfikatora GUID w formacie macierzystym. Mogę ustawić go jako ciąg znaków, ale byłoby miło przechowywać go jako prawdziwy GUID.Jak dodać typ GUID simpleType do schematu XML?

Jakieś pomysły, jak to zrobić?

Odpowiedz

4

XML zasadniczo zawiera tylko ciągi znaków, chociaż XSD również definiuje pewne inne typy pierwotne. GUID jednak nie jest wśród nich.

Można zdefiniować własny schemat dla typu identyfikatora GUID. Wiele osób to zrobiło. Oto, jak zrobił to zespół Microsoft OneNote: http://msdn.microsoft.com/en-us/library/aa203890(office.11).aspx.

+0

Widziałem również artykuł na ten temat. Jak połączyć SimpleType z elementem, atrybut xml, powiedzmy

13

Można zdefiniować własny niestandardowy typ prosty „GUID” ograniczając ciąg za pomocą wyrażenia regularnego tak:

<xs:simpleType name="GUID"> 
    <xs:restriction base="xs:string"> 
    <xs:pattern value="([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})|(\{[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\})"/> 
    </xs:restriction> 
</xs:simpleType> 
+0

Cóż, próbowałem tego, ale wciąż wraca z "The Pattern ograniczenie nie powiodło się. " w pliku: komunikat o błędzie, gdy go napotka. –

+1

Niepa ... mamy to w produkcji i wszystko działa dobrze ... kiedy i jak go używasz i gdzie pojawia się błąd? –

1

Mam sussed go. Czasami pomaga czytać dokumenty. Tak to będzie działać.

<xs:simpleType name="GUID"> 
     <xs:restriction base="xs:string"> 
      <xs:pattern value="([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})|(\{[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\})"/> 
     </xs:restriction> 
    </xs:simpleType> 


    <xs:element name="ruleident"> 
    <xs:complexType> 
     <xs:attribute name="ruleGuid" > 
     <xs:simpleType> 
     <xs:restriction base ="GUID"> 
      </xs:restriction> 
     </xs:simpleType> 
     </xs:attribute > 
    </xs:complexType > 
    </xs:element>