XSLT チュートリアルlogin
XSLT チュートリアル
著者:php.cn  更新時間:2022-04-20 15:02:22

XSLT XML 編集



XML ファイルに保存されたデータは、インターネット ブラウザーを介して編集できます。


XML を開いて、編集し、保存する

次に、サーバーに保存されている XML ファイルを開いて、編集し、保存する方法を説明します。

XSL を使用して XML ドキュメントを HTML フォームに変換します。 XML 要素の値は、HTML フォームの HTML 入力フィールドに書き込まれます。この HTML フォームは編集可能です。編集後、データはサーバーに送信され、XML ファイルが更新されます (これは ASP によって行われます)。


XML ファイルと XSL ファイル

まず、使用される XML ドキュメント (「tool.xml」) を確認します:

<?xml version="1.0" encoding="ISO-8859-1" ? >
<ツール>
<フィールド id="prodName">
<value>ハンマー HG2606</value>
</field>
<field id="prodNo">
<値>32456240</値>
</フィールド>
<フィールドid="価格">
<値>$30.00</値>
</フィールド>
</ツール>

XML ドキュメントを参照してください。

次に、次の形式の表 ("tool.xsl") を参照してください。 xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html> ;
<body>
<form method="post" action="edittool.html">
<h2>ツール情報 (編集):</h2>
<table border="0"> ;
<xsl:for-each select="tool/field">
<tr>
<td><xsl:value-of select="@id"/></td>
<td>
<input type="text">
<xsl:属性名="id">
<xsl:value-of select="@id" />
</xsl :attribute>
<xsl:attribute name="name">
<xsl:value-of select="@id" />
</xsl:attribute>
<xsl:attribute name="値">
<xsl:value-of select="value" />
</xsl:attribute>
</input>
</td>
</tr>
</ xsl:for-each>
</table>
<br />
<input type="submit" id="btn_sub" name="btn_sub" value="Submit" />
<input type="reset" id="btn_res" name="btn_res" value="リセット" />
</form>
</body>
</html>
</xsl:template>

</xsl:stylesheet>

XSLファイルを表示します。

上記の XSL ファイルは、XML ファイル内の要素をループし、XML の「フィールド」要素ごとに入力フィールドを作成します。 XML の「field」要素の「id」属性の値が、各 HTML 入力フィールドの「id」属性と「name」属性に追加されます。各 XML の「value」要素の値は、各 HTML 入力フィールドの「value」属性に追加されます。結果は、XML ファイルの値を含む編集可能な HTML フォームになります。

次に、2 番目のスタイルシート「tool_updated.xsl」があります。この XSL ファイルは、更新された XML データを表示するために使用されます。このスタイルシートは、編集可能な HTML フォームではなく、静的な HTML フォームを出力します:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version ="1.0 "
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
< body>
<h2>更新されたツール情報:</h2>
<table border="1">
<xsl:for-each select="tool/field">
<tr>
<td> ;gt;
gt;</td>
< /tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>

</xsl:stylesheet> ;

XSLファイルを表示します。


ASPファイル

上記の「tool.xsl」ファイルでは、HTMLフォームのaction属性の値は「edittool.asp」となっています。

「edittool.asp」ページには 2 つの関数が含まれています:loadFile() 関数は XML ファイルをロードして変換し、updateFile() 関数は XML ファイルを更新します:

<%
function loadFile(xmlfile,xslfile)
Dim xmlDoc, xslDoc
'XML ファイルの読み込み
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)
'XSL ファイルの読み込み
set xslDoc = Server.CreateObject("Microsoft.XMLDOM" " )
xslDoc.async = false
xslDoc.load(xslfile)
'Transform file
Response.Write(xmlDoc.transformNode(xslDoc))
end function

function updateFile(xmlfile)
Dim xmlDoc,rootEl,f
Dim i
'XML ファイルを読み込みます
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)

'rootEl 変数をルート要素と等しく設定します
rootEl = xmlDoc を設定します。 documentElement

'フォームコレクションをループします
for i = 1 To Request.Form.Count
'フォーム内のボタン要素を削除します
if instr(1,Request.Form.Key(i),"btn_")=0 then
'selectSingleNode メソッドは、クエリに一致する単一ノードの XML ファイルをクエリします
。このクエリは、
'現在のキー値と一致する id 属性を持つフィールド要素の子である値要素を要求します。フォーム コレクションに一致する場合 -
'フォーム コレクションの現在のフィールドの値に等しいテキスト プロパティを設定します。
set f = rootEl.selectSingleNode("field[@id='" & _
) Request.Form.Key(i) & "']/value")
f.Text = Request.Form(i)
end if
next

'変更したXMLファイルを保存
xmlDoc.save xmlfile

'すべて解放オブジェクト参照
set xmlDoc=nothing
set rootEl=nothing
set f=nothing

'クライアントが編集情報を参照できるようにするスタイルシートを使用して、変更された XML ファイルをロードします
loadFile xmlfile,server.MapPath(" tool_updated .xsl")
関数終了

'フォームが送信された場合は
'XML ファイルを更新し、結果を表示します - そうでない場合は、
'編集用に XML ファイルを変換します
if Request.Form("btn_sub")=" " then
loadFileserver.MapPath("tool.xml"),server.MapPath("tool.xsl")
else
updateFileserver.MapPath("tool.xml")
end if
%>


ヒント:
ASP の書き方がわからない場合は、ASP チュートリアルを読んでください。

注:

サーバー上にある XML ファイルを変換および更新しています。これはクロスプラットフォームのソリューションです。クライアントはサーバーから返された HTML のみを取得します。HTML はどのブラウザーでも実行できます。