-1
當我從XML在Java中使用XSLT轉換爲JSON出現以下錯誤:出錯轉換XML來JSON
必需項類型FN的第一個參數的:XML到JSON()是節點();提供的值具有項目類型的xs:串
XML:
<?xml version="1.0" encoding="UTF-8"?>
<map xmlns="http://www.w3.org/2005/xpath-functions">
<string key="student">john</string>
<string key="class">Bachelors</string>
<string key="subjects">
<subject>
<subjects>maths</subjects>
</subject>
</string>
</map>
XSLT(XML到JSON):
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="xmlText"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template name="init">
<xsl:apply-templates select="xml-to-json($xmlText)"/>
</xsl:template>
</xsl:stylesheet>
錯誤:
Type error at char 12 in xsl:copy-of/@select on line 30 column 50 of json2xml.xsl:
XPTY0004: Required item type of first argument of fn:xml-to-json() is node();
supplied value has item type xs:string Exception in thread "main" net.sf.saxon.s9api.SaxonApiException:
Required item type of first argument of fn:xml-to-json() is node();
supplied value has item type xs:string at net.sf.saxon.s9api.XsltTransformer.transform(XsltTransformer.java:599)
at com.xmltojson.sampleclass.SimpleJaxp.main(SimpleJaxp.java:44)Caused by: net.sf.saxon.trans.XPathException:
Required item type of first argument of fn:xml-to-json() is node();
supplied value has item type xs:string
那麼,你如何傳遞參數?考慮簡單地傳遞XML作爲主要輸入文檔並使用例如' xsl:template>'或者確保你傳入的參數不是但只有一個節點。或者,如果你有一個字符串參數,那麼你可以使用' '。 –
此外,您擁有的XML不是用於輸入到'xml-to-json'的模式的有效實例,我認爲,所以您需要首先將其轉換爲刪除'subject'內容或轉義它以確保'string key =「subjects」的內容是一個簡單的字符串。 –
@MartinHonnen當我傳遞字符串作爲xml-to-json(parse-xml($ xmlText))時,它將拋出xml-to-json:在錯誤的命名空間中找到的元素:Q {} Event。 – bookofcodes