2009-03-30 37 views
9

Dưới đây là một bài viết Docbook tầm thường nhưng hợp lệ:lựa chọn xpath trên các yếu tố với namespace

<?xml version="1.0" encoding="utf-8"?> 
<article xmlns="http://docbook.org/ns/docbook" version="5.0"> 
<title>I Am Title</title> 
<para>I am content.</para> 
</article> 

Dưới đây là một kiểu mà chọn title nếu tôi loại bỏ các xmlns thuộc tính ở trên, và không nếu tôi rời khỏi nó trong:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="html"/> 
    <xsl:template match="/"> 
     <xsl:apply-templates select="article"/> 
    </xsl:template> 
    <xsl:template match="article"> 
     <p><xsl:value-of select="title"/></p> 
    </xsl:template> 
    <xsl:template match="text()"/> 
</xsl:stylesheet> 

Làm cách nào để nói XPath chọn title thông qua article nếu thuộc tính không gian tên đó?

+0

Xem [câu hỏi này] (http://stackoverflow.com/questions/103576/whats-wrong-with- my-xpath-xml) – ripper234

Trả lời

15

Bạn cần phải thêm một bí danh cho namespace của bạn và sử dụng bí danh trong XPath của bạn

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:a="http://docbook.org/ns/docbook" 
    exclude-result-prefixes="a" 
    > 
<xsl:output method="html"/> 
    <xsl:template match="/"> 
     <xsl:apply-templates select="a:article"/> 
    </xsl:template> 
    <xsl:template match="a:article"> 
     <p><xsl:value-of select="a:title"/></p> 
    </xsl:template> 
    <xsl:template match="text()"/> 
</xsl:stylesheet> 
+0

Rực rỡ, thưa ngài. Cảm ơn bạn. –

Các vấn đề liên quan