ます。純3.5XPathクラスとメソッドXSLT2.0に対応していますか?
質問
という正規表現の選択が必要で、試合の機能です。私はあまり好きではないのですが使用外部ライブラリなどアングロサクソン)よろしくお願いします。
解決
ところがあってXSLT2.0てサポートされていないに建つライブラリ(また地域にとってのモノメーリングリストことができなものしかし多くの人がいのコーナーの場合なサポート。
別のオプションをチェックをオープンソース http://saxon.sourceforge.net/ を支援2.0にアクセスしてください。
編集(AB):上記の受け答えが混乱している。ありませんサポートすべてであ 予定はないがその方向に向 のためのXPath2.0以XSLT2.0機能です。います。
他のヒント
その答えはこの議論は誤解を招きます。ると思います。純3.5に対応しておりませんの最XSL/2.0T機能する場合であります。
一例:
A2.0の機能は以下のようなエラーメッセージ。純3.5:
現在-dateTime()'に不明なXSLTます。
私の答えは間違っています。見つからな証拠るとのマイクロソフト社の対応XSLT2.0にアクセスしてください。XSLT!= XPath.
今後、このダイニングテーブルのページをxpath/xqueryます。純益:
http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=64
い信頼この後、コピーします。
XSLTが変化した言語形式をサポートしています。このサーバーシステム、XMLソースツリーをより適した形式おります。XSLT用ノードのパターンの試合のテンプレート、そして小さなものに過ぎません。もので複雑な変化を比較的簡単ない場いたしますので使いくつかのカスタム。
の場合があります。延XSLT:
1)電話のカスタムビジネスロジック
2)動作を実現によってアクセス権
3)を行う複雑なフォーマットのための、文字列など
4)も呼webservice!!
手順延XSLT
1)の作成、カスタムオブジェクトの中から使用する内XSLT(クライアントまで、フルのC#)
CustomDate custDate = new CustomDate() ;
2)タに名前空間宣言のためのカスタムクラス内XSLTs名前空間宣言(XSLTのファイル)
<xsl:transform
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:myCustDate="urn:custDate">
3)パスのインスタンスのカスタムオブジェクトXSLT、同じ名前空間としての最後のステップ(クライアントまで、フルのC#)
xslArgs.AddExtensionObject("urn:custDate", custDate) ;
4)用のオブジェクト内からXSLT(XSLTのファイル)
<xsl:value-of select="myCustDate:GetDateDiff(./joiningdate)"/>
サンプルコード
例えば、しようとしていXSLTシートの場として操る。る必要がありまでの日数の社員は、当社にあります。以降にXSLTのないネイティブ日付操作機能を使ってみましょう拡張オブジェクトのための当社の課題です。
using System ;
using System.IO ;
using System.Xml ;
using System.Xml.Xsl ;
using System.Xml.XPath ;
public class XsltExtension{
public static void Main(string[] args){
if (args.Length == 2){
Transform(args[0], args[1]) ;
}else{
PrintUsage() ;
}
}
public static void Transform(string sXmlPath, string sXslPath){
try{
//load the Xml doc
XPathDocument myXPathDoc = new XPathDocument(sXmlPath) ;
XslTransform myXslTrans = new XslTransform() ;
//load the Xsl
myXslTrans.Load(sXslPath) ;
XsltArgumentList xslArgs = new XsltArgumentList() ;
//create custom object
CustomDate custDate = new CustomDate() ;
//pass an instance of the custom object
xslArgs.AddExtensionObject("urn:custDate", custDate) ;
//create the output stream
XmlTextWriter myWriter = new XmlTextWriter("extendXSLT.html", null) ;
//pass the args,do the actual transform of Xml
myXslTrans.Transform(myXPathDoc,xslArgs, myWriter) ;
myWriter.Close() ;
}catch(Exception e){
Console.WriteLine("Exception: {0}", e.ToString());
}
}
public static void PrintUsage(){
Console.WriteLine("Usage: XsltExtension.exe <xml path> >xsl path<") ;
}
}
//our custom class
public class CustomDate{
//function that gets called from XSLT
public string GetDateDiff(string xslDate){
DateTime dtDOB = DateTime.Parse(xslDate) ;
DateTime dtNow = DateTime.Today ;
TimeSpan tsAge = dtNow.Subtract(dtDOB) ;
return tsAge.Days.ToString() ;
}
}
コンパイルのこのコードを使用してくださいmembers.xml とmemberdisplay.xslるこのコンソール-アプリケーション.がついているものextendXSLT.html ファイル内の同一フォルダにまとめた。このファイル及び通知するクラスCustomDateと呼ばれている計算の日数は、従業員の会社です。
概要:
XSLTはパワフル変換の言語のためのXMLしに拡張オブジェです。NETとC#る事を確認しなければならないが簡単に遂行うことが不可能であるハードとXSLTです。
Members.xml:
<root>
<member>
<name>Employee1</name>
<joiningdate>01/01/1970</joiningdate>
<role>CTO</role>
</member>
<member>
<name>Employee2</name>
<joiningdate>24/07/1978</joiningdate>
<role>Web Developer</role>
</member>
<member>
<name>Employee3</name>
<joiningdate>15/12/1980</joiningdate>
<role>Tester</role>
</member>
</root>
Memberdisplay.xsl:
<xsl:transform
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:myCustDate="urn:custDate">
<xsl:output method="html" omit-xml-declaration="yes" />
<xsl:template match="/">
<html>
<head>
<style>
TABLE.tblMaster
{
border-style: solid;
border-width: 1px 1px 1px 1px;
border-style: solid;
border-color: #99CCCC;
padding: 4px 6px;
text-align: left;
font-family:Tahoma,Arial;
font-size:9pt;
}
TD.tdHeader
{
FONT-WEIGHT: bolder;
FONT-FAMILY: Arial;
BACKGROUND-COLOR: lightgrey;
TEXT-ALIGN: center
}
</style>
</head>
<body>
<table width="50%" class="tblMaster">
<tr >
<td class="tdHeader">Employee</td>
<td class="tdHeader">Join date</td>
<td class="tdHeader">Days in company</td>
<td class="tdHeader">Role</td>
</tr>
<xsl:for-each select="/root/member">
<tr >
<td> <xsl:value-of select="./name"/> </td>
<td> <xsl:value-of select="./joiningdate"/> </td>
<td> <xsl:value-of select="myCustDate:GetDateDiff(./joiningdate)"/> </td>
<td> <xsl:value-of select="./role"/> </td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:transform>
ついて議論する場合.純支援のためのXSLT2.0,XPath2.0、XQuery1.0ことが重要で区別の言語に自分のデータモデル(XDM).きます。純3.5枠組みのデータモデルに、どのようになります。ましたので説明してくれたメール対応マイクロソフトのPawel Kadluczka:
の文の"インスタンスの変換 1.0and XPath2.0Data Model"が混乱があると思っていま W3C XQuery1.0およびXPath2.0データ モデル(XDM)スペック (http://www.w3.org/TR/xpath-datamodel) 読み込む:
【定義:毎のインスタンス データモデルは、シーケンスです。].
【定義:列順番に並べたもの 集まります。] A シーケンスに参加 シーケンスです。単一項目に掲載される 独自のモデルとして配列 を含む一商品です。配列 に定義され2.5dnaの塩基配列を決定した。
【定義:項目のいずれかノード または原子値],
の場合はXPath API- XPathNodeIteratorは、シーケンス がXPathItem(XPathNavigator) を表します。
あ3.5XPathNavigator支XSLT2.0にアクセスしてください。
http://msdn.microsoft.com/en-us/library/system.xml.xpath.xpathnavigator.aspx
"のXPathNavigatorクラスのシステム。形式をサポートしています。XPath名前空間はabstractクラスを定義するカーソルのモデルをナビゲートする際に手がかりと編集のXML情報の項目としてのインスタンスは、XQuery1.0およびXPath2.0データモデルです。"