xslt進行解析的基本格式如下所示的程式碼,需要的朋友可以參考下
使用xslt進行解析的基本格式是這樣的:如
#程式碼如下:
<?xml version="1.0" encoding="GB2312"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method='html' version='1.0' encoding='GB2312' indent='yes'/> <xsl:template match="/"> <html> <body> //这里可以包含一些xhtml的标签 </body> </html> </xsl:template> </xsl:stylesheet>
XSL 指擴充樣式表語言(EXtensible Stylesheet Language),xsl是xml的樣式表,xsl 包括3部分,分別是:xslt(用於轉換XML 文件的語言)、x-path(用於在XML 文件中導航的語言)、xsl-fo(用於格式化XML 文件的語言),可以在http://www.php.cn/這個網站中找到相關內容的教學。那樣,xslt以xml的版本作為開始,用
一、遞歸以及傳參數方法:
以一顆家族樹例子,xml檔是這樣的:
程式碼如下:
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/xsl" href="digui.xsl"?> <person name="Otto" sex="mael" age="60"> <person name="Sandra" sex="mael" age="35"> <person name="Lichao" sex="femael" age="34"> <person name="Zhangsan" sex="mael" age="12"/> </person> <person name="Eric" sex="femael" age="36"> <person name="HaLi" sex="mael" age="18"/> </person> <person name="Lisi" sex="mael" age="30"> <person name="HeLi" sex="mael" age="6"/> <person name="Andy" sex="femael" age="13"/> </person> </person> </person>現在要寫一個xslt把家族的關係給表達出來,其實家族的關係就是一顆家族樹,所以我們透過輸出不同層次的縮進來表達這樣的關係,最大的祖宗,然後按輩份分別進行縮進,最小輩份的排在最後面,縮進最多,這樣一顆樹的層次就出來了;下面是xsl檔的程式碼:
程式碼如下:
<?xml version="1.0" encoding="GB2312"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method='html' version='1.0' encoding='GB2312' indent='yes'/> <xsl:template match="/"> <html> <body> <xsl:apply-templates select="person"> <xsl:with-param name="level" select="'0'"/> </xsl:apply-templates> </body> </html> </xsl:template> <xsl:template match="person"> <xsl:param name="level"/> <p style="text-indent:{$level}em">name:<xsl:value-of select="@name"/>,sex:<xsl:value-of select="@sex"/>,age:<xsl:value-of select="@age"/></p> <xsl:apply-templates select="person"> <xsl:with-param name="level" select="$level + 2"/> </xsl:apply-templates> </xsl:template> </xsl:stylesheet>在這裡我們先在範本中定義了一個叫level的參數,用< ;xsl:param name="level"/>這樣的語法,然後在主template(...)新增範本的時候給參數賦值,
這樣的方法將參數level的值進行了累加從而實現了遞歸,這樣每渲染一層,參數值就加上2,從而實現了不同層次的縮進來實現家族樹的結構;這裡還要說一下,我們透過@+屬性如@name來取節點屬性的值。
二、用參數實現隔行換色:
還是引用上面的例子,以及參數level,我們在遞歸的時候給參數+1(奇數)而不是+2 (偶數) ,透過(.. test="$level mod 2 = 0")或(.. test="$level mod 2 = 1")就可以實現選取奇數行還是偶數行,我們用
,從而實現了隔行換色的效果,具體程式碼如下:
程式碼如下:
<?xml version="1.0" encoding="GB2312"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method='html' version='1.0' encoding='GB2312' indent='yes'/> <xsl:template match="/"> <html> <body> <xsl:apply-templates select="person"> <xsl:with-param name="level" select="'0'"/> </xsl:apply-templates> </body> </html> </xsl:template> <xsl:template match="person"> <xsl:param name="level"/> <xsl:choose> <xsl:when test="$level mod 2 = 0"> <p style="text-indent:{$level}em;background-color:#DDD">name:<xsl:value-of select="@name"/>,sex:<xsl:value-of select="@sex"/>,age:<xsl:value-of select="@age"/></p> </xsl:when> <xsl:otherwise> <p style="text-indent:{$level}em;background-color:#EEE">name:<xsl:value-of select="@name"/>,sex:<xsl:value-of select="@sex"/>,age:<xsl:value-of select="@age"/></p> </xsl:otherwise> <xsl:apply-templates select="person"> <xsl:with-param name="level" select="$level + 1"/> </xsl:apply-templates> </xsl:template> </xsl:stylesheet>
三、符号转义以及CDATA语法:
目前碰到的只有“” 要转义成如果在表达式里出现这两个符号,页面在预览的时候就会报错;
另外我们需要将原文件的内容原封不动的输出来,包括换行或上面的大于和小于号等页面元素,这时候就需要CDATA这个标签, CDATA全称character data,翻译为字符数据,数据不进行转义直接输出。语法格式如下:
例如:
]]>
在页面上显示的内容将是"
四、几个教程中并没有提到的名词:
1、local-name();例子:
2、
用apply时,引擎自动搜索与当前select指定xpath的匹配节点相匹配的template(该template必须有属性match)并使用该template进行处理,此时需要指定的是select的path。
用call时就跟其它语言调用函数一样,必须指定name属性,相应的,该template必须有name属性,当然,也可以在这时with-param(当然相应的模板中有对应的param才行,不过这个不强制要求)。通过设置mode属性可以调用同一内容的不同表现形式,这个由自己去定义。
3、count(ancestor::*)这种写法是计算当前节点有多少个祖先节点,当然 ancestor也可以用child,following-sibling等xpath关系。
五、对于要符合多条件的判断,xslt不能很好的支持:
以家族树为例,我要取一个位于第二层的,名字叫Lichao的人,如果按字面理解我们可以写成
以上是在学习和使用xslt对xml进行解析的过程中的一些感想和记录,xslt很强大,有很多功能都没有涉及,当然,我还要继续学习和研究。
以上是利用xslt將xml解析成xhtml的程式碼範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

rssfeedsarexmldocuments usedforcontentAggregation and distribution.totransformthemintoreadableContent:1)parsethethexmlusinglibrarieslibrariesliblarieslikeparserinparserinpython.2)andledifferentifferentrssssssssssssssssssssssssssssssssssssssssssssssersions andpotentionparsingrorS.3)

JSONFeed是一種基於JSON的RSS替代方案,其優勢在於簡潔性和易用性。 1)JSONFeed使用JSON格式,易於生成和解析。 2)它支持動態生成,適用於現代Web開發。 3)使用JSONFeed可以提升內容管理效率和用戶體驗。

如何構建、驗證和發布RSSfeeds? 1.構建:使用Python腳本生成RSSfeed,包含標題、鏈接、描述和發布日期。 2.驗證:使用FeedValidator.org或Python腳本檢查RSSfeed是否符合RSS2.0標準。 3.發布:將RSS文件上傳到服務器,或使用Flask動態生成並發布RSSfeed。通過這些步驟,你可以有效管理和分享內容。

確保XML/RSSfeeds安全性的方法包括:1.數據驗證,2.加密傳輸,3.訪問控制,4.日誌和監控。這些措施通過網絡安全協議、數據加密算法和訪問控制機制來保護數據的完整性和機密性。

XML是一種標記語言,用於存儲和傳輸數據,RSS是一種基於XML的格式,用於發布頻繁更新的內容。 1)XML通過標籤和屬性描述數據結構,2)RSS定義特定標籤發布和訂閱內容,3)使用Python的xml.etree.ElementTree模塊可以創建和解析XML,4)XPath表達式可查詢XML節點,5)feedparser庫可解析RSSfeed,6)常見錯誤包括標籤不匹配和編碼問題,可用xmllint驗證,7)使用SAX解析器處理大型XML文件可優化性能。

XML是一種用於數據存儲和交換的標記語言,RSS是基於XML的格式,用於發布更新內容。 1.XML定義數據結構,適合數據交換和存儲。 2.RSS用於內容訂閱,解析時使用專門庫。 3.解析XML可使用DOM或SAX,生成XML和RSS需正確設置元素和屬性。

使用Python可以從XML/RSS轉換到JSON。 1)解析源數據,2)提取字段,3)轉換為JSON,4)輸出JSON。使用xml.etree.ElementTree和feedparser庫解析XML/RSS,使用json庫生成JSON數據。

XML/RSS和RESTAPI在現代網絡開發中協同工作,通過以下方式:1)XML/RSS用於內容髮布和訂閱,2)RESTAPI用於設計和操作網絡服務。結合使用這兩者可以實現高效的內容管理和動態更新。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

Dreamweaver CS6
視覺化網頁開發工具