xml を xhtml に解析する TransformBinder クラスのインスタンス メソッド
ここ数日、私は xml を xhtml に変換するための xslt を勉強していました。前の記事では、xslt を使用して xml を xhtml に解析する方法を紹介しました。
前の方法のため、xslt を xml ファイル内に直接インポートする必要があります。 、プロジェクトで使用される xml ファイルはシステムによって生成され、パスを提供することしかできませんが、xml の内容を書き換える方法はないため、xml と xslt を外部で関連付ける方法を見つける必要があります。これは目的を達成するだけでなく、複数の XML ファイルに適用できるため、管理にも便利です。
コードから始めましょう。システムはパッケージ化にモジュール js を使用します。このツールは今後の記事で紹介する予定ですが、まだ勉強していません。基礎となるコードはまだあります。ここでは、クラスとクラスによって実装されるメソッドを含む js をファイルに記述します。
以下は js コードです。transform.js
コードは次のとおりです。 : XSLTtransform.htm
コードは次のとおりです:
var XmlDom=function(){ if (window.ActiveXObject) { // IE var arrSignatures = ["MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0", "MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument", "Microsoft.XmlDom"]; for (var i=0; i < arrSignatures.length; i++) { try { var oXmlDom = new ActiveXObject(arrSignatures[i]); return oXmlDom; } catch (oError) { //ignore } } throw new Error("你的系统没有安装 MSXML."); } else if(document.implementation.createDocument){ // Firefox var oXmlDom = document.implementation.createDocument("", "", null); return oXmlDom; } else{ throw new Error("浏览器不支持 XML DOM object."); } } var transformXSLT=function(_XML,_XSL) { if (window.Node) { Node.prototype.transformNode = function(XslDom) { var oProcessor = new XSLTProcessor(); oProcessor.importStylesheet(XslDom); var oResultDom = oProcessor.transformToDocument(myXmlDom); var oSerializer = new XMLSerializer(); var sXml = oSerializer.serializeToString(oResultDom, "text/xml"); return sXml; } } var myXmlDom = new XmlDom(); myXmlDom.async=false; var myXslDom = new XmlDom(); myXslDom.async=false; myXmlDom.load(_XML); myXslDom.load(_XSL); var sResult=myXmlDom.transformNode(myXslDom); if(window.ActiveXObject){ if(myXmlDom.parseError.errorCode != 0){ var sError=myXmlDom.parseError; var txt = ""; txt += "<br>错误代码: "; txt += sError.errorCode; txt += "<br>错误原因: "; txt += sError.reason; txt += "<br>错误行号: "; txt += sError.line; document.write(txt); }else{ document.write(sResult); } }else if(document.implementation.createDocument){ var oSerializer = new XMLSerializer(); var sXmlDom = oSerializer.serializeToString(myXmlDom, "text/xml"); var oParser = new DOMParser(); var oXmlDom = oParser.parseFromString(sXmlDom,"text/xml"); if (oXmlDom.documentElement.tagName == "parsererror") { var oXmlSerializer = new XMLSerializer(); var sXmlError = oXmlSerializer.serializeToString(oXmlDom); alert(sXmlError); } else { document.write(sResult); } } } var TransformBinder = function(XML,XSL) { this.XML = XML; this.XSL = XSL; } TransformBinder.prototype.registerAction = function(handlers) { this.handlers = handlers; } TransformBinder.prototype.bind = function() { var _this = this; this.handlers(_this.XML,_this.XSL); }
transform.js を分析します:
xmlDom IE と FF の場合、dom を作成するメソッドである xml の dom 要素を作成するためにコンストラクターが使用されます。 IE は window.ActiveXObject メソッドを使用して作成し、FF は document.implementation.createDocument メソッドを使用して作成します。IE か FF かを判断します。
IE で異なるバージョンの xml ["MSXML2.DOMDocument.5.0"、"MSXML2.DOMDocument.4.0"、"MSXML2.DOMDocument.3.0"、"MSXML2.DOMDocument"、"Microsoft.XmlDom"]) の場合は、for ループを使用します対応するバージョンを検索して、 new ActiveXObject(arrSignatures[i]); で dom を作成します。 ブラウザーが dom を直接作成するには、document.implementation.createDocument("", "", null); を使用します。 XML DOM オブジェクトをサポートするとエラーがスローされます。 transformXSLT コンストラクターは、XSLT を使用して XML を HTML に変換します。FF には、transformNode メソッドがないため、独自にメソッドを構築しました。コードは次のとおりです。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type='text/javascript' src="transform.js"></script> </head> <body> <script type="text/javascript"> var XML = "这里输入XML路径"; var XSL = "这里输入XSL路径"; var tempObj = new TransformBinder(XML,XSL); tempObj.registerAction(transformXSLT); tempObj.bind(); </script> </body> </html>
次に、このメソッドを使用して、IE と変換を実装します。 IE のエラー処理 FF には比較的単純なエラー情報をロードするための parseError 属性があります。ここでは、errorCode はエラーの理由、line はエラーの行番号です。メインエラーが表示されます。エラーがあればエラー内容が表示されます。エラーがなければ変換結果 sResult が表示されます。 FF では、XMLSerializer と XMLSerializer.serializeToString() を使用して xmlDom を文字列に変換し、その文字列を dom オブジェクトに変換することで、変換プロセス中にエラーが報告された場合、parsererror を含む情報を取得できます。文字列のtagNameがパーサーエラーかどうかを判断し、そうでない場合はその文字列の内容をスローします。
ここで注意すべき点がいくつかあります:
a. IE は XML 内の DTD エラーを検出できますが、FF は XML 自体の文法エラーのみを検出できます。
b. エラーはブラウザーで判断する必要があるため、最終的な結果は検出されません。コード構造の観点からはマージは合理的ではないように見えますが、これも無力な手段です。
簡単に拡張および変更できるように、TransformBinder クラスを使用してカプセル化します。
TransformBinder.prototype.registerAction このプロトタイプはイベントを登録するために使用され、次に TransformBinder.prototype.bind を使用してイベントをバインドする必要がある場合は、新しい TransformBinder (XML、XSL) を作成し、transformXSLT イベントを登録するだけです。 、バインドするとこの効果が得られます。拡張する必要がある場合は、新しいコンストラクターを作成し、登録してこのクラスにバインドして効果を実現します。以上がxml を xhtml に解析する TransformBinder クラスのインスタンス メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

XML ファイルは PPT で開くことができますか? XML、Extensible Markup Language (Extensible Markup Language) は、データ交換とデータ ストレージで広く使用されている汎用マークアップ言語です。 HTML と比較して、XML はより柔軟であり、独自のタグとデータ構造を定義できるため、データの保存と交換がより便利で統一されます。 PPT (PowerPoint) は、プレゼンテーションを作成するために Microsoft によって開発されたソフトウェアです。包括的な方法を提供します。

Python の XML データを CSV 形式に変換する XML (ExtensibleMarkupLanguage) は、データの保存と送信に一般的に使用される拡張可能なマークアップ言語です。 CSV (CommaSeparatedValues) は、データのインポートとエクスポートに一般的に使用されるカンマ区切りのテキスト ファイル形式です。データを処理するとき、分析や処理を容易にするために、XML データを CSV 形式に変換する必要がある場合があります。 Pythonは強力です

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

C# 開発で XML および JSON データ形式を処理する方法には、特定のコード サンプルが必要です。現代のソフトウェア開発では、XML と JSON の 2 つのデータ形式が広く使用されています。 XML (Extensible Markup Language) はデータの保存と送信に使用されるマークアップ言語であり、JSON (JavaScript Object Notation) は軽量のデータ交換形式です。 C# 開発では、XML と JSON データの処理と操作が必要になることがよくありますが、この記事では、C# を使用してこれら 2 つのデータ形式を処理し、添付する方法に焦点を当てます。

PHPXML 関数を使用して XML データを処理します。 XML データを解析します。 simplexml_load_file() および simplexml_load_string() は、XML ファイルまたは文字列を読み込みます。 XML データにアクセスする: SimpleXML オブジェクトのプロパティとメソッドを使用して、要素名、属性値、およびサブ要素を取得します。 XML データを変更する: addChild() メソッドと addAttribute() メソッドを使用して、新しい要素と属性を追加します。シリアル化された XML データ: asXML() メソッドは、SimpleXML オブジェクトを XML 文字列に変換します。実用的な例: 製品フィード XML を解析し、製品情報を抽出し、変換してデータベースに保存します。

Python を使用した XML でのデータ検証の実装 はじめに: 実生活ではさまざまなデータを扱うことがよくありますが、その中でも XML (Extensible Markup Language) は一般的に使用されるデータ形式です。 XML は可読性と拡張性に優れており、データ交換や設定ファイルなどさまざまな分野で広く使用されています。 XML データを処理する場合、多くの場合、データの整合性と正確性を確認するためにデータを検証する必要があります。この記事では、Python を使用して XML でデータ検証を実装し、対応する

Jackson は、Java オブジェクトから JSON へ、および JSON から Java オブジェクトへの変換に役立つ Java ベースのライブラリです。 JacksonAPI は他の API よりも高速で、必要なメモリ領域が少なく、大きなオブジェクトに適しています。 XmlMapper クラスの writeValueAsString() メソッドを使用して POJO を XML 形式に変換します。対応する POJO インスタンスをパラメーターとしてこのメソッドに渡す必要があります。構文 publicStringwriteValueAsString(Objectvalue)throwsJsonProcessingExceptionExampleimp

Cは、サードパーティライブラリ(TinyXML、PUGIXML、XERCES-Cなど)を介してXMLと相互作用します。 1)ライブラリを使用してXMLファイルを解析し、それらをC処理可能なデータ構造に変換します。 2)XMLを生成するときは、Cデータ構造をXML形式に変換します。 3)実際のアプリケーションでは、XMLが構成ファイルとデータ交換に使用されることがよくあり、開発効率を向上させます。
