Проблема с XML-схемой - PullRequest
0 голосов
/ 08 июня 2009

Я хотел бы записать свои удары по клавиатуре в 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>

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

спасибо,

1 Ответ

2 голосов
/ 08 июня 2009

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

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

Схема подпоследовательности будет выглядеть так:

<?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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...