- PR -

msxsl.exeでXSLT 2.0のresult-document機能を使う方法は?

1
投稿者投稿内容
ゆか
ベテラン
会議室デビュー日: 2004/04/06
投稿数: 75
投稿日時: 2006-04-11 14:54
いつもお世話になっております。

msxsl.exeを使って、XSLT 2.0のresult-documentの機能を使いたいと
思っています。
でも、下記からダウンロードできるのはresult-document機能が使えません。
http://www.microsoft.com/downloads/details.aspx?FamilyId=2FB55371-C94E-4373-B0E9-DB4816552E41&displaylang=en

たぶん、XSLT 2.0には対応していないのかもしれません。
Saxonではなく、msxsl.exeを使いたいと思っております。
msxsl.exeを使って、XSLT 2.0のresult-document機能を使う方法はあるのでしょうか?
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2006-04-11 15:50
MSXSL.EXE は MSXMLx.DLL を使う
> msxsl.exeを使って、XSLT 2.0のresult-document機能を使う方法はあるのでしょうか?
スタイルシートの VERSION を 2.0 に書替えて トライ

XALAN-(c,j)、LIBXML2 のほうにも XSLTプロセッサはあります。
.NET Framework2.0 には nxslt2 もある
http://www.xmllab.net/Products/nxslt2/tabid/73/Default.aspx
exsl: になりますが。
Multiple output documents via
exsl:document
extension element
==================================
MICROSOFT の本流なら XQUERY を使え、と回答されるかも

[ メッセージ編集済み 編集者: MMX 編集日時 2006-04-11 16:56 ]
ゆか
ベテラン
会議室デビュー日: 2004/04/06
投稿数: 75
投稿日時: 2006-04-11 17:33
いつもレスをいただいてありがとうございます。

> MSXSL.EXE は MSXMLx.DLL を使う
無知で申し訳ないのですが、上記の行は具体的にどのようにすれば
良いか教えていただいてよろしいでしょうか。
すいません。

version="2.0"に変更しただけでは、同じエラーが出ます。

つまり、下記のような処理を作りたいのです。

●実行.bat
msxsl.exe 入力.xml 変換.xsl -o 出力.html

●変換.xsl
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">

<xsl:output method="text"/>
<xsl:output method="html" indent="yes" name="html"/>

<xsl:template match="/">
<xsl:for-each select="//testrun">
<xsl:variable name="filename" select="concat('output1/',@run,'.html')" />
<xsl:value-of select="$filename" /> <!-- Creating -->
<xsl:result-document href="{$filename}" format="html">
<html><body>
<xsl:value-of select="@run"/>
</body></html>
</xsl:result-document>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

●入力.xml
<?xml version="1.0" encoding="Shift_JIS"?>
<tests>
<testrun run="test1">
<test name="foo" pass="true" />
<test name="bar" pass="true" />
<test name="baz" pass="true" />
</testrun>
<testrun run="test2">
<test name="foo" pass="true" />
<test name="bar" pass="false" />
<test name="baz" pass="false" />
</testrun>
</tests>
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2006-04-12 00:08
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template match="/">
<t>
<!-- システム特性 -->
<xsl:value-of select="system-property('xsl:version')"/> /
<xsl:value-of select="system-property('xsl:vendor')"/> /
<xsl:value-of select="system-property('xsl:vendor-url')"/> /

<!-- 利用可能なXSL(T)要素か調べる -->
<xsl:value-of select="element-available('xsl:result-document')"/> /
</t>
</xsl:template>

</xsl:stylesheet>
-------------------- xslt 内で調べられます
ゆか
ベテラン
会議室デビュー日: 2004/04/06
投稿数: 75
投稿日時: 2006-04-12 13:47
ざわざわ、コードまで書いていただいてありがとうございます。
本当に助かりました。
# こんな事も出力できるのですね。正直びっくりしました。

さて、下記が結果です。
1 / Microsoft / http://www.microsoft.com / false /
案の定、Verは1で'xsl:result-document'は使えませんでした。

msxsl.exeのファイルバージョンを見ても1.1になっていました。

そこで、改めて質問させていただけないでしょうか。
つまり、XSLT 2.0対応のmsxsl.exeは無いのでしょうか?
それとも、どこかのサイトに行けばあるのでしょうか?
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2006-04-12 16:18
XSLT2.0 は正式発行していません。解説本(洋書)はもう出ているのですが

最新の MSXML6.DLL でも 対応は 1.0です、当然といえる。
従って msxsl.exe も2.0 で動作しません、書けるけど。

正式発行まで、もう少しの 予定です、日本語の 解説本も ドドと発行される
それまでは、代替案で。
---------------
ただ、安心できないのは、xmlの次の大型新人仕様(2.0)はどれも「複雑」で、
デビューの日程がドンドン先に延びることです。
svgのように勢力圏が固まったところに割込み失敗中でプータローなのもある。
もやもやしているとJSONのような代替に持って行かれる部分もあり。
The W3C XQuery working group has updated XQuery 1.0
and XPath 2.0 Full-Text Use Cases and XQuery 1.0 and XPath 2.0 Full-Text.
変更 変更 また 変更
==========================================
またまた 新しい XML用のAPI MSでは三番目
Oleg Tkachenko: New Microsoft XML API - XmlLite
http://planet.xmlhack.com/
で 2006 June 15 ごろの記事
Vista と IE7 に組込み(IE7のパッケージからのXmlLite.DLL のみの取り出し可能 )
軽量 just 115Kb and depends on nothing.
(Latest msxml6.dll is 1.3 Mb and it depends on mlang.dll, wininet.dll, urlmon.dll (about 700Kb each). )

XmlLite reader is a pull-based
(as opposite to SAX, which is push-based) non-caching forward-only
XML parser.

Of course DTD processing is turned off by default
just like in .NET 2.0 and MSXML6.

One more cool feature - XmlLite can read XML fragments,

Non-Extractive XML Parsing comes true. This can seriously reduce memory consuption in some scenarios.


[ メッセージ編集済み 編集者: MMX 編集日時 2006-06-16 10:08 ]
ゆか
ベテラン
会議室デビュー日: 2004/04/06
投稿数: 75
投稿日時: 2006-04-19 16:36
>正式発行まで、もう少しの 予定です、日本語の 解説本も ドドと発行される
>それまでは、代替案で。
レスありがとうございます。
いろいろ勉強してみました。
代替案を探ってみようと思います。
1

スキルアップ/キャリアアップ(JOB@IT)