2009-06-08 4 views
0

Я хотел бы записать мои нажатия клавиш в xml-файле. Атрибутом может быть ключ, а значение может быть меткой времени или другим способом (не имеет значения). Я хотел бы написать схемы в том, что мой выход схемы будет точно так:Проблема с XML-схемой

<LoggingActions> 
    <Keyboad> 
     <Entry key="a">0</Entry> 
     <Entry key="b">1213</Entry> 
     <Entry key="c">3445</Entry> 
    </Keyboad> 
</LoggingActions> 

до сих пор, это моя схема:

<xs:element name="MyEvents"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element ref="LoggingActions"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

<xs:element name="KeyboardEvent"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element ref="MyKeyEntry"/> 
     <xs:element ref="Time"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

<xs:element name="MyKeyEntry"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element maxOccurs="unbounded" ref="keyReference"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

<xs:element name="Time"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element maxOccurs="unbounded" ref="timeRef"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

<xs:element name="keyReference" type="xs:string"/> 
<xs:element name="timeRef" type="xs:int"/> 

Вместо этого я получаю эту XML как мой выход:

<LoggingActionsxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<LoggedKey> 
    <MyKeyEntry>a</MyKeyEntry> 
    <MyKeyEntry>b</MyKeyEntry> 
    <MyKeyEntry>c</MyKeyEntry> 
    </LoggedKey> 

    <Time> 
    <timeRef>0</timeRef> 
    <timeRef>1213</timeRef> 
    <timeRef>3445</timeRef> 
    </Time> 
    </LoggingActions> 

Как объединить эти два вместе?

спасибо,

ответ

2

Нужный XML не в правильном формате, ваши заметки «Вступление» должны иметь некоторый атрибут, вероятно, что-то вроде «значение =„а“» вместо «=„а“», хотя достаточно легко сделать вывод о ваших намерениях.

<LoggingActions> 
    <Keyboard> 
    <Entry value="a">0</Entry> 
    <Entry value="b">1213</Entry> 
    <Entry value="c">3445</Entry> 
    </Keyboard> 
</LoggingActions> 

Схема subsequen будет выглядеть следующим образом:

<?xml version="1.0" encoding="utf-16"?> 
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="LoggingActions" type="LoggingActionsType" /> 
    <xsd:complexType name="LoggingActionsType"> 
    <xsd:sequence> 
     <xsd:element name="Keyboard" type="KeyboardType" /> 
    </xsd:sequence> 
    </xsd:complexType> 
    <xsd:complexType name="KeyboardType"> 
    <xsd:sequence> 
     <xsd:element maxOccurs="unbounded" name="Entry" type="EntryType" /> 
    </xsd:sequence> 
    </xsd:complexType> 
    <xsd:complexType name="EntryType"> 
    <xsd:attribute name="value" type="xsd:string" /> 
    </xsd:complexType> 
</xsd:schema> 
+0

Спасибо за схему. Если я хочу сгенерировать объект на основе этой схемы и установить свой ключ/значение для этого объекта. Он может

 LoggingActionsType loggingAction = new LoggingActionsType(); loggingAction.Keyboard.  It has a SetValue method but this does not work. loggingAction.Keyboard.SetValue(keyboard.ToString(), GetTimestamp()); 
2009-06-08 19:28:33

Смежные вопросы