Я преобразую XML в JSON, используя python3, l xml -библиотеку и XSLT. Я продолжаю получать XSLTParseError
при запуске моего кода, и я не уверен, как действовать дальше.
Образец XML Сообщение:
<SOAP-ENV:Body>
<ns0:BookStore xmlns:ns0="http://www.example.com/xsd/books">
<ns0:Book>
<ns0:Title>The Power of Now</ns0:Title>
<ns0:Author>Vivek Ranadive</ns0:Author>
<ns0:Date>1999</ns0:Date>
<ns0:ISBN>0-06-566778-9</ns0:ISBN>
<ns0:Publisher>Tibco Software Inc</ns0:Publisher>
</ns0:Book>
</ns0:BookStore>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Ожидаемый JSON Результат:
"Envelope": {
"Body": {
"BookStore": {
"Book": {
"Title": "The Power of Now",
"Author": "Vivek Ranadive",
"Date": 1999,
"ISBN": "0-06-566778-9",
"Publisher": "Tibco Software Inc"
}
}
}
}
}
Используется XSLT
Python Код:
dom = ET.parse('XML_Example01.xml')
xslt = ET.parse('XSLT.xsl')
transform = ET.XSLT(xslt)
newdom = transform(dom)
print(newdom)
Ошибка, которую я получаю:
XSLTParseError: xsl:when : could not compile test expression 'normalize-space(.) ne . or not((string(.) castable as xs:integer and not(starts-with(string(.),'+')) and not(starts-with(string(.),'0') and not(. = '0'))) or (string(.) castable as xs:decimal and not(starts-with(string(.),'+')) and not(starts-with(.,'-.')) and not(starts-with(.,'.')) and not(starts-with(.,'-0') and not(starts-with(.,'-0.'))) and not(ends-with(.,'.')) and not(starts-with(.,'0') and not(starts-with(.,'0.'))) )) and not(. = 'false') and not(. = 'true') and not(. = 'null')'
Моя основная причина использования XSLT - в конечном итоге добавить logi c для выполнения force-array, таким образом, преобразованный файл JSON имеет согласованные массивы. Кроме того, пример XML является просто обобщенным c XML, реальные файлы немного сложнее и больше с большим количеством вложений.
Я не не получаю ту же ошибку, если я использую те же XML и XSLT в XML Шпион для выполнения преобразования.
Большое спасибо за помощь