XForms/使用 get 和 put 進行讀寫
外觀
< XForms
有時你只需要一個友好的使用者介面來編輯單個靜態 XML 檔案。在這種情況下,靜態檔案是指在建立表單時你知道檔案的精確路徑,並且你知道檔名永遠不會改變的檔案。當應用程式在已知位置(絕對位置或相對於 XForm 的固定位置)具有配置檔案時,就會出現這種情況。
如果這是硬碟驅動器上的本地檔案,那麼這很容易做到,只需要使用 get 和 put 操作,以及檔案的絕對路徑名或相對於表單所在目錄的相對路徑名即可。
XForms 還允許使用者使用 HTTP get 操作從遠端 Web 伺服器讀取資料到表單,並使用 HTTP put 操作將資料寫入檔案。請確保你在你的 Web 伺服器上啟用了 put 操作,並且你要寫入的檔案是可寫的。這意味著你可能需要執行 chmod +w 命令,如果是 UNIX 檔案。

<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xf="http://www.w3.org/2002/xforms"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<title>Submission with get and put</title>
<xf:model>
<xf:instance id="data-instance" src="data.xml" xmlns="" />
<xf:submission id="read-from-file" method="get"
action="data.xml" replace="instance" instance="data-instance" />
<xf:submission id="save-to-file" method="put"
action="data.xml" replace="instance" instance="data-instance" />
</xf:model>
</head>
<body>
<p>Demonstration of using XForms to get and put data to local file using the submission element.</p>
<xf:input ref="Element1">
<xf:label>Elementu 1:</xf:label>
</xf:input>
<br />
<xf:input ref="Element2">
<xf:label>Elementul 2:</xf:label>
</xf:input>
<br />
<xf:input ref="Element3">
<xf:label>Elementuul 3:</xf:label>
<br />
</xf:input>
<xf:submit submission="read-from-file">
<xf:label>Reload</xf:label>
</xf:submit>
<xf:submit submission="save-to-file">
<xf:label>Save</xf:label>
</xf:submit>
</body>
</html>
當表單載入到瀏覽器時,以下檔案將被讀取到記憶體中(來自表單執行所在的相同資料夾)。當按下儲存按鈕時,該檔案將被寫入磁碟。重新載入按鈕將重新載入檔案到瀏覽器中。
<?xml version="1.0" encoding="UTF-8"?>
<Data>
<Element1>One</Element1>
<Element2>Two</Element2>
<Element3>Three</Element3>
</Data>
請注意,當表單資料位於執行時選擇的名稱的檔案中時,此表單不適用。這是因為 instance 中的 src 屬性不是動態的。你不能在 src 屬性中使用 XPath 表示式。
以下是如何在 XForms 1.1 中動態載入檔案的示例
<!-- sample code that could be used in XForms 1.1 -->
<xf:submission id="read-from-file" method="get" replace="instance" instance="data-instance">
<xf:resource value="instance('my-instance')/FileNameSetByUpload"/>
</xf:submission>
請注意,如果出現這種情況,來自惡意網站的任何表單都可能能夠查詢已知檔案或可疑檔案,例如 my-passwords.doc,並在未經你同意的情況下將它們上傳。如果“resource”屬性(XForms 1.1 草案的一部分)得到實現,那麼這個限制可能會得到緩解。
XForms 1.1 標準關於提交資源 - 這允許根據例項資料動態建立資源路徑。