msxslで「不明な方法」エラー
- msxslを使用してXMLからHTMLへの変換を試みましたが、「不明な方法」というエラーが発生しました。
- xmlファイルとxslファイルを指定する方法では変換ができましたが、xmlファイル内のhref属性からxslファイルを読み取りたいという要件があります。
- 「不明な方法」というエラーについては情報が少なく、解決策が見つかっていません。関連の情報が消えていたり、難しいプログラムが必要とされているようです。解決方法をご存知の方は教えてください。
- ベストアンサー
msxslで「不明な方法」エラー
msxslで、xmlからhtmlの変換をしたいと思っています。 試しに 「msxsl xmlファイル名 -pi」 と打ったのですが、 ----- Code: 0x80004005 不明 な方法です。 -->processing-instruction('XML-stylesheet'<--) ----- と出て変換されません。 「msxsl xmlファイル名 xslファイル名」 では変換されましたが、xmlファイル内のhref属性からxslファイルを読み取りたいと思っています。 xmlファイルの先頭には <?xml version="1.0" encoding="Shift_JIS"?> <?xml-stylesheet type="text/xsl" href="xslファイル名"?> を記述しています。 googleで検索して同じような症状は見つけたのですが、リンク先が消えていて見れませんでした。 もう一つのリンク先に難しいプログラムが書いてありましたが、意味が分からず挫折しました。 ご存知の方いたら教えてください。
- masaota56
- お礼率53% (64/119)
- XML
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1補足の内容でテストしてみたところ私の環境では問題ありませんでした。 msxsl index.xml -u 3.0 -pi のようにバージョン指定して実行すると、質問文と同じエラーが表示されました。 msxsl index.xml -u 4.0 -pi で実行した場合にはエラーはでませんでしたので、 MSXML 4.0 をインストールするとOKだと思います。 ちなみに、私が使っているmsxsl.exe のバージョンは4.0 です。
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
msxsl のバージョン xml ファイルの内容 xsl ファイルの内容 を補足していただけますか? こちらで試したところでは、 msxsl xmlファイル名 -pi で問題なく出力できました
補足
index.xml ---------------------------------- <?xml version="1.0" encoding="Shift_JIS"?> <?xml-stylesheet type="text/xsl" href="index.xsl"?> <h***> <s*******> <date>2006/04/11</date> <place>****</place> <text>************************</text> <imgfile>******.jpg</imgfile> </s*******> <s*******> <date>2005/12/28</date> <place>*******</place> <text>****</text> <imgfile>*********.jpg</imgfile> </s*******> 繰り返し </h***> ------------------------------------ index.xsl ------------------------------------ <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="Shift_JIS" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" /> <xsl:template match="h***"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <link rel="stylesheet" type="text/css" href="***style.css" /> <link rel="stylesheet" type="text/css" href="***print.css" media="print" /> <title>***</title> <style type="text/css"> スタイルシートの内容 </style> </head> <body> 本文ヘッダー部分 <xsl:apply-templates /> 本文フッター部分 </body> </html> </xsl:template> <xsl:template match="s*******"> <div class="round"><xsl:apply-templates /></div> </xsl:template> <xsl:template match="date" name="date"> <div class="date"><xsl:apply-templates /></div> </xsl:template> <xsl:template match="place" name="place"> <div class="place"><xsl:apply-templates /></div> </xsl:template> <xsl:template match="text" name="text"> <div class="text"><xsl:apply-templates /></div> </xsl:template> <xsl:template match="imgfile" name="imgfile"> <div class="img"> <img> <xsl:attribute name="src">img/<xsl:apply-templates /></xsl:attribute> </img> </div> </xsl:template> </xsl:stylesheet>
関連するQ&A
- xmlから別ディレクトリのxslファイルの参照
xml初心者です。 xmlファイルのひとつ上の階層にxslファイルを置いてあります。 xslファイル <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="../format.xsl"?> ... xslファイル format.xsl <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> ... href="../format.xsl" のように指定したのですがxslが適用されません。 そもそも別ディレクトリへの参照は可能なのでしょうか。 もし可能ならばどのような方法があるのでしょうか。
- ベストアンサー
- XML
- うまく表示されない・・・
XML初心者のものです。 以下のXMLをXSLを使用してWebで公開しようと試みてます。が、うまく表示されません。 どこがおかしいのでしょうか? また設置ディレクトリ構成も教えてください。 以下サンプルを示します。 -XMLファイル-(sake1.xml) <?xml version="1.0" encoding="Shift_JIS" ?> <?xml-stylesheet href="sake1.xsl" type="text/xsl" ?> <酒><名前>スーパードライ</名前></酒> -XSLファイル-(sake1.xsl) <?xml version="1.0" encoding="Shift_JIS" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="酒"> <html> <head> <title>酒データ1</title> </head> <body> <p align="center">とりあえず表示してみる。</p> <p><xsl:value-of select="酒" /></p> </body> </html> </xsl:template> </xsl:stylesheet>
- 締切済み
- XML
- 拡張子が一意でないときの makeコマンドの使い方
XMLファイルをmsxsl.exeコマンドを使用して変換する操作を、自動化したいと考えています 更新したものだけを対象とするために、makeコマンドを使おうと Makefile を書いていますが、てこずっています。 目的として、XML1.xml、XML2.xml、XML3.xmlを、HTML化するスタイルシートHTML.xslがあり、 msxsl XML1.xml HTML.xsl -o XML1.html として変換します。 また、3つのXMLファイルを結合したKetsugouXML.xml、そこからある種の集計XMLファイル化するスタイルシートmatome.xslがあり、 msxsl KetsugouXML.xml matome.xsl -o matome.xml として変換します。 これらの自動化のために以下のようなMakefileを書きました。 XML = XML1.xml XML2.xml XML3.xml MATOME_XML = matome.xml HTML = $(XML:%.xml=%.html) HTML_ALL = $(XML:%.xml=%.html) $(MATOME_XML) all: $(HTML_ALL) $(HTML) : $(XML) msxsl $< HTML.xsl -o $@ # ↑1個めのファイル名しか得られない # msxsl $(@:%.html=%.xml) HTML.xsl -o $@ # ↑更新したXMLファイル以外も全て実行されてしまう $(MATOME_XML) : $(XML) msxsl KetsugouXML.xml matome.xsl -o $@ 問題は、上のコメント行に書いた通りですが、 msxsl $< HTML.xsl -o $@ と書いた場合、実行結果が、 msxsl XML1.xml HTML.xsl -o XML1.html msxsl XML1.xml HTML.xsl -o XML2.html msxsl XML1.xml HTML.xsl -o XML3.html となり、入力ファイル名が変わりません。 次に、 msxsl $(@:%.html=%.xml) HTML.xsl -o $@ とした場合、 msxsl XML1.xml HTML.xsl -o XML1.html msxsl XML2.xml HTML.xsl -o XML2.html msxsl XML3.xml HTML.xsl -o XML3.html と期待の結果かと思ったのですが、 ソース1個を更新しただけでも全ての変換がかかってしまいます。 (ちなみに、集計XMLファイルの生成は正常にできています) このような場合、どのように Makefile を記述すべきでしょうか? 補足: 自分の経験としては、C言語やTeXで make を使ったことはありましたが、 この場合C言語と異なり、一意に .c → .o とはならないこと、 同じソース(.xml)からでもスタイルシートを変えることで、異なる変換結果ファイル(.htmlだったり、.xmlだったり)になるところの記述方法の不理解が原因であろうと 思っています。 環境は Windows10、GNU Make4.1 を使っています。
- ベストアンサー
- オープンソース
- XSLTの記述方法
お世話になります。 XML+XSLTで開発しております。 XSLTの記述方法でjavascriptの引数にXMLデータを挿入する記述は どうすればよいのでしょうか? すごい初歩的な質問かもしれませんが ご教授よろしくお願いいたします。 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <table> <tr> <td > <a href="#" onClick="hogehoge('pram')">hogehoge rink </a> </td> </tr> </table> </xsl:template> </xsl:stylesheet> ↓↓↓↓↓↓こんな感じにしたい↓↓↓↓↓↓ <a href="#" onClick="hogehoge('<xsl:value-of select="$prm_test"/>')">りんく</a>
- ベストアンサー
- XML
- ファイルサーバの日本語フォルダ名へのリンク
勉強しはじめで質問内容にも至らない点があるかと思いますが何卒アドバイスをお願いいたします。 イントラを作成するにあたり、ファイルサーバー上の日本語名フォルダにリンクしたいのですが、文字化けをしてしまいます。ソースは下記のような感じです。 ■xmlファイル「test.xml」 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <root> <item> <title>日本語フォルダ名</title> <link>\\test01¥テストデータ</link> </item> <item> <title>管理</title> <link>\\test01\経費管理</link> </item> </root> ■xslファイル「test.xsl」 <?xml version="1.0" encoding="utf-8"?><!-- DWXMLSource="test.xml" --> <!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> 中略 <!ENTITY euro "?"> ]> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="utf-8"/> <xsl:template match="/"> <xsl:for-each select="root/item"> <a href="{link}"><xsl:value-of select="title"/></a><br /><br /> </xsl:for-each> </xsl:template> </xsl:stylesheet> これをオーサリングソフト(Dreamweaver8を使用)でプレビューすると、日本語フォルダ名が文字化けをしてしまいリンクができません。 ファイル名を半角英数にすれば済む話ではあるのですがあまりに大量のファイルがあるのと、管理上の問題でフォルダ名はなんとか日本語のままで使用したく考えております。 お手数ですが回避策、代替案などございましたら教えていただけると助かりますので何卒よろしくお願い申し上げます。
- ベストアンサー
- XML
- XSLで、XMLの空タグを制御したい。
値がないXML文書に、 <exsample /> こう書かれてしまうものを、 <exsample></exsample> このように出力したいのですが、出来ずでした。 以下は、私のやり方です。 ■ XSL <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="http://xml.apache.org/xslt"> <xsl:output method="xml" encoding="Shift_JIS" indent="yes" xalan:indent-amount="4"/> <xsl:template match="/"> <xsl:copy-of select="."/> </xsl:template> </xsl:stylesheet> ■ XML <?xml version="1.0" encoding="Shift_JIS"?> <root> <section> <category> <exsample1>value</exsample1> <exsample /> </category> </section> </root> ご教授、よろしくお願いいたします。
- ベストアンサー
- XML
- XSLTでの外部XMLファイルの読み込みについて。
XSLTについて質問がございます。 下記のように、document関数を用いて外部のxmlを取り込んでいるのですが、 もし、そのxmlファイルが存在しなかった場合はエラーとなってしまいます。 この時、対象のxmlファイルが存在するか否かを、XSLTで調べる事は可能なのでしょうか? boolean関数を用いてみたりしたのですが、ファイルがない場合はやっぱりエラーになってしまいます。 どなたかご教授願います。 <!-- STYLESHEET --> <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:import href="xsl1.xsl"/> <xsl:param name="doc" select="document('../XML/import.xml')"/> </xsl:stylesheet>
- ベストアンサー
- XML
- 複数リンクをしたいのですが表示されない
複数リンクしたいページがあったので色々試みました こちらのサイトを参考にして http://www6.airnet.ne.jp/manyo/xml/index.html Xlinkの単純リンク・拡張リンクを試したのですがリンクが全くされないで、普通に文字が並んでるように表示されました また http://questionbox.jp.msn.com/qa1821124.html こちらのやり方で試みてもリンクされていない状態でした。 XMLの書き方がまずかったのか、別の理由でリンク表示されないのかわかりませんがどうしたら複数リンクができるでしょうか? 大体こんな感じに書きました ↓XML <?xml version="1.0" encoding="Shift_JIS"?> <?xml-stylesheet type="text/xsl" href="anime1.xsl"?> <iti> <sait> <name>世界の発展</name> <gai> <link url="http://***">イギリス</link> <link url="http://***">フランス</link> <link url="http://***">イタリア</link> </gai> </sait> ↓XSL <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title>テスト</title> </head> <body> <div align="center"> <xsl:apply-templates select="iti" /> </div> </body> </html> </xsl:template> <xsl:template match="iti"> <br /> <br /> <h1>テスト</h1> <xsl:apply-templates select="sait" /> <br /> <br /> </xsl:template> <xsl:template match="sait"> <table border="1" bgcolor="#006fdd" width="700"> <tr> <th><xsl:value-of select="name" /></th> </tr><tr> <td><xsl:value-of select="gai" /></tr> </table> <br /> </xsl:template> <xsl:template match="link" > <a> <xsl:attribute name="href"> <xsl:value-of select="@url" /> </xsl:attribute> <xsl:value-of select="text()" /> </a> </xsl:template> </xsl:stylesheet> どこら辺が間違ってますでしょうか?
- ベストアンサー
- XML
- javaのTransformerでエラー
javaで以下のXSLとXMLをnewTransformerする際にエラーとなります。 user:formatstring(・・・)の部分でエラーになっていると思うのですが、これをどう変えればOKなのかがわかりません。 javascript付のXSLをTransformerする方法がわかる方がいらっしゃいましたらご教授の程よろしくお願いします。 ---エラーの内容--- エラー: '非 static Java 関数 'formatstring' への先頭引き数は有効なオブジェクト参照子でありません。 ---XSL--- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:user="urn:my-scripts" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="user msxsl"> <msxsl:script language="JavaScript" implements-prefix="user"> function formatstring(nodelist, type){ var rtnStr = ""; if (nodelist.item(0) == null || nodelist.item(0).text == "") { return rtnStr; } var i = type.length - 1; var pos = nodelist.item(0).text.length - 1; while(1){ if ( i < 0) { break; } if (type.charAt(i) == "#") { rtnStr = nodelist.item(0).text.charAt(pos) + rtnStr; pos --; }else { rtnStr = type.charAt(i) + rtnStr; } i --; } return rtnStr; } </msxsl:script> <xsl:template match="/"> <html> <body> <form name="form1"> <font style="font-size:12.00px;border:0px;position:absolute;top:90.50px;left:64.60px;width:22.80px;text-align:none;"> <xsl:value-of select="user:formatstring(/aaa/P04,'##-##-##')"/> </font> </form> </body> </html> </xsl:template> </xsl:stylesheet> ---XML--- <?xml version="1.0" encoding="Shift_JIS"?> <?xml-stylesheet href="xxxxx.xsl" type="text/xsl"?> <aaa><P04>123456</P04></aaa>
- ベストアンサー
- Java
- 親のパラメータの取得
いつもお世話になっています。 XML, XSL等の勉強を始めました。 子供から親のパラメータを取得する方法がよく分かりません。 sample.xsl ---------------------- <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="parent"> hello?:<xsl:value-of select="@hello" /><br /> <xsl:apply-templates select="child" /> </xsl:template> <xsl:template match="child"> hello2?:<xsl:value-of select="@hello" /><br /> </xsl:template> </xsl:stylesheet> sample.xml ------------------------------ <?xml version="1.0" encoding="Shift_JIS" ?> <?xml-stylesheet type="text/xsl" href="xmlsample.xsl" ?> <parent hello="hello2"> <child /> </parent> こんな感じでやっています。 parentの中で、childのtemplateがapplyしてあります。 こうすると、<parent>の中で<child>が呼び出されるのですが、このchildの中でparentに指定してあるパラメータhelloの値が取得したいです。 できれば変数に代入するとかせずに(まだトライしていません)、直接childからparentのhelloパラメータの内容を取得したいと思っています。 このようなことはxml, xslで可能なのでしょうか。 またどうすれば出来るのかご存じの方が居たら、よろしくお願いします。
- ベストアンサー
- XML
お礼
msxml4.0をインストールしたところ、正常に動作しました。ありがとうございました。