Я пытаюсь использовать CodeSynthesis C ++ / Tree для перевода xsd в классы C ++.
В XSD у меня есть элемент с именем время выглядит так:
<xs:element name="time">
<xs:complexType>
<xs:attribute name="seconds" use="required" type="xs:double"/>
... other attributes
</xs:complexType>
В преобразованном заголовке C ++ это определяется как:
typedef ::time time_type;
и при компиляции выдает сообщение об ошибке
'time' in namespace '::' does not name a type
Однако, если я изменю имя элемента на «times» или что-то еще, он скомпилируется нормально. Что может быть причиной такого поведения?
Большое спасибо!
Это потому что ::time
такой же как std::time
.
Хорошо, теперь я прочитал немного больше о документации, там написано
«Словарь без пространства имен отображается в глобальную область. Это также можно изменить с помощью указанных выше параметров, используя пустое имя для пространства имен XML:»
Таким образом, решение заключается в добавлении следующего при преобразовании файлов xsd в C ++
--namespace-map =cs