私は、XML(この場合はXSD)をXSLでXMLに変換するための優れたJavascriptライブラリを見つけるのに問題があります。私はいくつかのJavascriptライブラリをオンラインで見つけましたが、それらのどれも働いていません。私はそれをオンラインで( 'http://www.freeformatter.com/xsl-transformer.html'によって)変換しようとしました。しかし、私がJavascriptライブラリを使用すると、残念なことにそれは動作しません。私はここで何が間違っていますか?javascriptのxslトランスフォーマ?
これは私が今持っているコードです:
<html>
<body>
<div id="output"></div>
<script type="text/javascript" src="jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="jquery.xslt.js"></script>
<script type="text/javascript">
$(function() {
$('#output').xslt({xmlUrl: 'notworking.xsd', xslUrl: 'notworking.xsl'});
});
</script>
</body>
</html>
'notworking.xsd' ファイル:
<xs:import schemaLocation="https://www.w3.org/2001/xml.xsd" namespace="http://www.w3.org/XML/1998/namespace"/>
<xs:element name="list">
<xs:complexType>
<xs:complexContent>
<xs:extension>
<xs:sequence>
<xs:element minOccurs="0" name="list.start" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
'notworking.xsl' ファイル:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="xml" version="1.0" indent="yes" encoding="utf-8"/>
<xsl:template match="xs:schema">
<xsl:variable name="name" select="fn:distinct-values(.//xs:element/@name)"/>
<xsl:variable name="schema" select="."/>
<xsl:element name="xsd">
<xsl:for-each select=".//xs:element[@name]">
<xsl:sort select="@name"/>
<xsl:apply-templates select="."/>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template match="xs:element">
<xsl:variable name="type" select="fn:tokenize(@type,':')[last()]"/>
<xsl:variable name="base" select="fn:tokenize(ancestor::xs:schema/xs:complexType[@name=$type]/xs:complexContent/xs:extension/@base,':')[last()]"/>
<xsl:element name="{@name}">
<xsl:copy-of select="@minOccurs"/>
<xsl:variable name="sequence" select="./xs:complexType/xs:sequence/xs:element|ancestor::xs:schema/xs:complexType[@name=$type]//xs:extension/xs:sequence/xs:element"/>
</xsl:element>
</xsl:template>
<xsl:template match="text()">
<xsl:if test="normalize-space() ne ''">
<xsl:value-of select="."/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
「それはうまくいかない」と言ったらどういう意味ですか?エラーは何ですか?エラーを示すコードスニペットやプランナーを作成できますか? – mcgraphix
ほとんどのブラウザには少なくともFFとMSIEのxslエンジンがあります。余分なjavascriptや呼び出しは必要ありません。 –
ブラウザはXSLT 1.0しかサポートしていないので、それはXSLT 2.0スタイルシートですので、Saxon-CEブラウザでXSLT 2.0を実行する場合はSaxon-JSを使用します。 –