ホームページ バックエンド開発 XML/RSS チュートリアル xml を xhtml に解析する TransformBinder クラスのインスタンス メソッド

xml を xhtml に解析する TransformBinder クラスのインスタンス メソッド

Apr 22, 2017 pm 02:20 PM
xhtml xml

ここ数日、私は 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=&#39;text/javascript&#39; 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

ホットトピック

PowerPoint を使用して XML ファイルを開くことはできますか? PowerPoint を使用して XML ファイルを開くことはできますか? Feb 19, 2024 pm 09:06 PM

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

Python で XML データを CSV 形式に変換する Python で XML データを CSV 形式に変換する Aug 11, 2023 pm 07:41 PM

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

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

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

C# 開発で XML および JSON データ形式を処理する方法 C# 開発で XML および JSON データ形式を処理する方法 Oct 09, 2023 pm 06:15 PM

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

PHP 関数を使用して XML データを処理するにはどうすればよいですか? PHP 関数を使用して XML データを処理するにはどうすればよいですか? May 05, 2024 am 09:15 AM

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

Python を使用して XML でデータ検証を実装する Python を使用して XML でデータ検証を実装する Aug 10, 2023 pm 01:37 PM

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

JavaのJacksonライブラリを使用してPOJOをXMLに変換しますか? JavaのJacksonライブラリを使用してPOJOをXMLに変換しますか? Sep 18, 2023 pm 02:21 PM

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

CおよびXML:関係とサポートの調査 CおよびXML:関係とサポートの調査 Apr 21, 2025 am 12:02 AM

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

See all articles