問題タブ [xslcompiledtransform]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xslt - xslt の要素 (列) を並べ替えて、xml ファイルを csv 形式に変換する方法
上記の xml は、RDL ファイル用に SSRS によって生成されます。上記のxmlファイルをXSLT(カスタマイズフォーマット)を使ってCSV形式に変換したいです。RDL ファイル (SSRS レポート) は 50 列の非常にシンプルで、ユーザー インターフェイスでのユーザーの選択に応じてすべての列のデータが表示されます。ユーザー インターフェイスでは、50 列すべてのパラメーターを選択できます (つまり、列の順序を選択したり、特定の列をレポートに含めるかどうかを選択したり、フォント スタイルなどを選択したりできます...)。前述のように、各列には 2 つの主な機能があります。つまり、選択に基づいて並べ替えたり、並べ替えたりすることができます。
たとえば、上記の xml 形式のレポート出力から、50 列すべてが xml 形式に存在することがわかりますが、通常はレポートに表示されない余分なフィールドも含めています。
col1 はレポートに含まれ、csv ファイルの 2 番目の列として順序付けられます (seqID)。col2 もレポートに含まれており、csv ファイルの最初の列として並べられています。col3 はレポートに含まれておらず、注文の選択も空であるため、csv ファイルには含まれていません。... ... 同様に、col50 はレポートに含まれていますが、csv ファイルでは 3 列目に配置されています。
ここでの私の主な課題は、「CSV」の xslt ファイルを作成し、ユーザーごとに選択される順序選択に列を配置することです。
変換後の CSV ファイルの出力は次のようになります。
この種の xsl ファイルを作成するための良いアイデアは大歓迎です。私の質問を理解し、この点で私を助けようとしてくれてありがとう。
xml - XslCompiledTransform を使用して、出力 XML で自己終了タグを取得するにはどうすればよいですか?
私を助けてください...
入力 XML ドキュメントがあります。
それを次の xml に変換する必要があります。
次のスタイル シートを作成しました。
しかし、それを変換しようとすると、次の結果が得られます。
自己終了タグを解釈するにはどうすればよいですか?
C# 変換コード:
extension-methods - 可変数の引数を持つ XSLT 拡張メソッド
可変数の引数を持つ XSLT 拡張関数を実装しようとしています。パラメータを配列、params 配列、ICollection などとして宣言すると、次のエラーが発生します (TYPE_NAME は使用される型です)。
System.Xml.Xsl.XslTransformException: Clr 型 'TYPE_NAME' を持つ拡張関数パラメーターまたは戻り値はサポートされていません。
しかし、Umbraco には、concat
このように機能する機能が組み込まれています。Umbraco のソースを調べたところ、次のようになっています。
XSLT では、次のように呼び出されます。
同様のアプローチを試して、関数を次のように宣言すると:
XSLT で同じ方法で呼び出します。
次のエラーが表示されます。
System.Xml.Xsl.XslTransformException: 拡張オブジェクト 'urn:Custom' には、3 つのパラメーターを持つ一致する 'Test' メソッドが含まれていません。
concat の入力が何らかの形で XPathNodeIterator に変換されていると思いますが、その方法がわかりません。助言がありますか?
c# - XSLT 適用時の XML の doctype 宣言の省略
doctype を含む XML ファイルがあります。
このファイルはサードパーティから提供されたものであり、生成方法を制御することはできません。XSLT を使用して XML を変換しますが、XSLT は dtd が見つからないと文句を言います。私が持っていない dtd ファイルにアクセスしようとしないように、XSLT にそれを省略するように指示するにはどうすればよいですか。
ありがとう
c# - XPath / XmlCompiledTransform: XPath 関数で親をテストする
私が本当に間違いを犯しているのか、それともこれが正しく機能していないのかはわかりません:
現在のノードが最初の子である場合、またはその親が最初の子である場合は、何か特別なことを行います。
問題は "parent::position() = 1" .. .net の XmlCompiledTransform で
期待される式の終わり。'('. ...sition() = 1 または親 ::position -->(<-- = 1 が見つかりました。
さて、どうやら2番目の部分のposition()関数が気に入らないようですが..どうすれば親の位置を取得できますか? 一般に、テストで XPath 関数を XPathと組み合わせるにはどうすればよいですか?
c# - XSLTへの参照がすでに含まれているXDocumentを変換するためのより効率的な方法はありますか?
XSLTファイルへの参照がすでに含まれているXMLファイルがあります。
参照されている変換ルールに従ってこのXMLファイルを変換し、適切なPDFファイルを作成できるようにすることを検討しています。
を介して実際の変換を実行できるようですがSystem.Xml.Xsl.XslCompiledTransform
、変換を実行する前にXSLTを手動で関連付ける必要があります。
私が見たものに基づいて、XDocumentからXSLT参照を手動でプルする必要があります(以下の大まかな開始)。
ただし、XSLTはすでにXMLファイル自体で参照されているため、作業が多すぎると思います。変換を適用するためのより効率的な方法があります。
ありますか、それともこれは人がしなければならないことですか?
html - XSLTからのHTMLWebフォームおよびXMLとしてのPOSTユーザーデータ
私は1つの問題に直面しています。次のようなフォーム送信システムを構築する必要があります-
- ブラウザは、xsltファイルからWebフォームをレンダリングします。
- ユーザーはWebフォームに入力し、[送信]をクリックします。
- ブラウザは、入力されたフォームのxmlを作成します。
- ブラウザはデータをサーバーに送信します。
誰かがそれを行うために既存の図書館で私を助けることができますか?(Altova Stylevisonを試しましたが、いくつかの欠点があります)。
asp.net - DocumentXPathNavigator での .Net Null 参照例外
興味深い例外に遭遇しました。運用サーバーの 1 つで、次の例外が発生することがあります。
IL を開いて各メソッドを調べると、 DocumentXPathNavigator => this.document が null であることが示唆されます。奇妙なのは、この問題をローカルでもテスト サーバーでもまったく再現できないことです。
ちょっとした背景、これが鍵かもしれません...これは、XslCompiledTransform.Transform() に渡される XmlDocument をキャッシュする Web アプリケーション (.Net 3.5 を実行) です。当社のキャッシングは、分散型キャッシュ サーバーを通じて提供されます。XmlDocument はシリアル化されてキャッシュされるため、特定のオブジェクトへの参照が存在し続けることはありません。これにより、暗黙の XmlDocument -> DocumentXPathNavigator が発生したときに this.document が設定されないように何かが明示的に妨げられているか、Transform() の実行中にどこかの参照が削除されていると思われます。いずれにせよ、私は困惑しています。
だから、私の質問は次のとおりだと思います:
- 他の誰かがこれを見たことがありますか?
- 何が原因なのか、または対処方法を知っている人はいますか?
ありがとう
編集:
これについてさらに考えた後、意味のある唯一のことは、それが競合状態であることです。アプリケーションがオブジェクトを使用している間に、キャッシング アプライアンスが何らかの理由でオブジェクトを期限切れにしています。
編集/編集:
.Net 3.5、上記で参照されているアセンブリは 2.0 です
xslt - 兄弟が繰り返される xml をフラット ファイルに変換する XSLT
私は以下のようなxmlを持っています:
フラットファイルに変換する必要があります。そのために、次のxslを書きました
そのため、出力は
"HDR";"Text";"20120112045620";"F"
"GL";"PDA";"People Status Global";"term語彙"
"GL";"PDA";"People Statusグローバル";"人物ステータス グローバル更新済み"
"GL";"PDA";"グローバル人物ステータス";"用語語彙"
"GL";"PDA";"グローバル人物ステータス";"人物ステータス グローバル更新済み"
"GL" ;"PDI";"People Status Global";"用語語彙"
"GL";"PDI";"People Status Global";"People Status Global Updated"
"GL";"PDI";"Global People Status";"用語語彙"
"GL";"PDI";"グローバル ピープル ステータス";"ピープル ステータス グローバル更新"
"GL";"GLB";"ピープル ステータス グローバル";"用語語彙"
"GL";"GLB";"個人ステータス グローバル";"個人ステータス グローバル更新"
"GL";"GLB";"Global People Status";"用語語彙"
"GL";"GLB";"Global People Status";"People Status Global Updated"
"FTR";12
私のxslを使用すると、単一の行が得られます:
"GL";"PDAPDIGLB";"People Status GlobalGlobalPeople Status";"用語の語彙People Status Global Updated"
また、ヘッダー行:
"HDR";"PIGLSSTD";"20120112045620";"F":をフッター行
"FTR"
と共に先頭に追加する必要があります。
底に。
c# - 解決方法とxsltc.exe XslCompiledTransforms を使用する場合の相対パスを持つ要素?
Web アプリケーションのビルド プロセスの一環として、フル コンパイルを実行するたびにMicrosoft の xsltc.exeコンパイラでビルドされるように XSLT スタイルシートをセットアップしました。コードがコンパイルされ、同じ場所でホストされるため、ローカルでの開発中、これはうまく機能しました。しかし、これをビルド サーバーに配置すると、問題が発生しました。
ビルド サーバーは、私がローカルで行うのと同じように XSLT スタイルシートをコンパイルしますが、コンパイルされたコードを内部のステージング Web サーバーにデプロイするスクリプトが実行されます。これらのバイナリがコンパイルされた場所から移動する<xsl:import>
と、<xsl:include>
要素内の相対パスが正しく解決されなくなり、XSLT スタイルシートの実行時に次のような例外が発生します。
現在のコードの一般的な考え方は次のとおりです。
現在、xsltc.exe ベースのプリコンパイル済み XSLT スタイルシートを取り込むために、単一の「Type」パラメーターを指定して XslCompiledTransform.Load() メソッドを使用しています。スタック トレースから、.NET フレームワークが XmlUrlResolver を使用してこれらの外部スタイルシートの実際の場所を解決しようとしていることがわかりますが、新しいこれらのスタイルシートが存在する Web サーバー上の場所を指す baseUri。
これは、xsltc.exe で事前にコンパイルせず、XmlReaders を介して XSLT スタイルシートをロードすることで解決できると思います。これにより、独自の XmlResolver 実装を提供できるパラメーターを持つ他の XslCompiledTransform.Load() メソッドを使用できるようになるからです。 . ただし、構文の検証とパフォーマンスのためにプリコンパイル オプションが気に入っているので、絶対に必要でない限り、これを放棄したくありません。
<xsl:include>
xsltc.exe を使用してこれらの XSLT スタイルシートをプリコンパイルする方法はありますか?実行時に<xsl:import>
要素の相対パス解決のために baseUri を明示的に指定する方法を提供しますか?