|
Как создать валидный XSD для такого XML
|
|||
---|---|---|---|
#18+
Собственно, есть XML следующего вида: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Необходимо создать как можно более строгую XSD-схему для него. Многочисленные онлайн-конверторы генерят излишне гибкую схему, просто перечисляя все возможные атрибуты элемента row для всех элементов table. Пытаюсь придумать что-то более строгое. Например, вариант 1, через group: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91.
Вариант 2, через complexType: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67.
И в том и в другом случае, XSD не является валидным по понятным причинам. Т.е. при попытке Код: sql 1.
получаю ошибку: Msg 6992, Level 16, State 1, Line 8 The content model of type 'xs-nun(/data/complexType())' contains two elements with the same name 'table' and different types, nullability, or value constraints. Т.е. ругается на наличие внутри описания sequence двух элементов с одинаковым именем ("table") Пока больше мыслей нет. Все таки надеюсь, что все упирается в мое поверхностное знание XSD и решение существует. Любые идеи приветствуются! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 10:38 |
|
Как создать валидный XSD для такого XML
|
|||
---|---|---|---|
#18+
TRex, проблема действительно в поверхностных знаниях! вот тебе видео урок, не пожалей время просмотри его и потом многое проясниться. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 12:05 |
|
Как создать валидный XSD для такого XML
|
|||
---|---|---|---|
#18+
Фридрихвот тебе видео урок спасибо, обязательно посмотрю. Фридрихвот тебе примерный шаблон Не совсем то. Такой шаблон генерят многочисленные онлайн-генераторы. Я хочу понять можно ли создать более строгую XSD. Посмотрите на исходный XML. Этот xml призван передавать изменения в записях таблиц базы данных. Т.е. задача максимум, чтобы: - каждый элемент table с уникальным именем встречалься не больше одного раза - у каждого элемента были подэлементы row с уникальным(!) набором аттрибутов со строгими типами данных как-то так... У вас же кол-во элементов table - unbounded, атрибутов же общее множество и у всех тип string. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 12:30 |
|
Как создать валидный XSD для такого XML
|
|||
---|---|---|---|
#18+
авторЯ хочу понять можно ли создать более строгую XSD.Можно создать схему любой степени строгости, хоть регламентирующую этот пример до последней запятой. Весь вопрос в том, насколько строгой она должна быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 14:41 |
|
Как создать валидный XSD для такого XML
|
|||
---|---|---|---|
#18+
TRex- каждый элемент table с уникальным именем встречалься не больше одного раза<xsd:key> TRexу каждого элемента были подэлементы row с уникальным(!) набором аттрибутовImpossible TRexсо строгими типами данныхКакими? авторЭлемент row, является дочерним к элементу table и может содержать атрибуті таких-то типовВот и все, что Вы можете задать. Структура XML документа, описываемая в XSD не может зависеть от значений каких-либо узлов. Только от их наличия ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 14:48 |
|
Как создать валидный XSD для такого XML
|
|||
---|---|---|---|
#18+
Antonariy, хоть регламентирующую этот пример до последней запятой.Не получится :) У товарища, скажем, атрибут с2 содержит "данные" объекта. И он хочет, чтобы, скажем для цвета, там была строка (а в идеале - строковой энумератор), а для рисунка base64. Для документа, по идее, там целочисленный идентификатор ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 14:51 |
|
Как создать валидный XSD для такого XML
|
|||
---|---|---|---|
#18+
Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Детальнее о типах здесь https://msdn.microsoft.com/en-us/library/ms256131(v=vs.110).aspx TRex- каждый элемент table с уникальным именем встречалься не больше одного раза Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
можно еще имя таблицы задать энумератором Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9.
или рэгекспом ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 15:12 |
|
Как создать валидный XSD для такого XML
|
|||
---|---|---|---|
#18+
_Vasilisk_Antonariy, хоть регламентирующую этот пример до последней запятой.Не получится :) У товарища, скажем, атрибут с2 содержит "данные" объекта. И он хочет, чтобы, скажем для цвета, там была строка (а в идеале - строковой энумератор), а для рисунка base64. Для документа, по идее, там целочисленный идентификаторпод строгостью я подразумеваю соответствие тексту предоставленного документу, а не каким-то формальным правилам, которые автор даже не озвучил. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 15:19 |
|
Как создать валидный XSD для такого XML
|
|||
---|---|---|---|
#18+
* документа ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 15:20 |
|
Как создать валидный XSD для такого XML
|
|||
---|---|---|---|
#18+
TRex, К слову, Ваша задача решается элегантнейшим способом для такого документа Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
ну и конечно же создавать схему по данным - это нонсенс. Нужно данные создавать по схеме ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 15:28 |
|
Как создать валидный XSD для такого XML
|
|||
---|---|---|---|
#18+
Спасибо всем, в особенности _Vasilisk_! _Vasilisk_TRex, К слову, Ваша задача решается элегантнейшим способом для такого документа Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
ну и конечно же создавать схему по данным - это нонсенс. Нужно данные создавать по схеме Да, я уже пришел к этому выводу - придется изменять сам формат xml, в моем случае это возможно, хотя и накладно. :( Жаль что исходный формат (из первого поста) не получается типизировать средствами XSD до такой степени, как хотелось бы. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 17:06 |
|
|
start [/forum/topic.php?fid=14&msg=39260431&tid=1332088]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 269ms |
0 / 0 |