[英]Test XSL for missing attribute
我知道有人問過類似的問題,但我無法弄清楚測試有什么問題。
這是XML樣式的3種變化; 我試圖找出<apsite:address>
的值,空字符串或缺少的元素。
<apsite:apsite xmlns="http://www.w3.org/1999/xhtml" >
<apsite:name>John</apsite:name>
<apsite:address>Some Address</apsite:name>
</apsite:apsite>
<apsite:apsite xmlns="http://www.w3.org/1999/xhtml" >
<apsite:name>John</apsite:name>
<apsite:address></apsite:name>
</apsite:apsite>
<apsite:apsite xmlns="http://www.w3.org/1999/xhtml" >
<apsite:name>John</apsite:name>
</apsite:apsite>
我需要找到其中的值為空字符串或null的實例。 這些是我的前提條件。
<xsl:if
test="../apsite:address = ''">
<dc:source>
<xsl:value-of select="." />
</dc:source>
</xsl:if>
<xsl:if
test="not(apsite:apsite/apsite:address)">
<dc:source>
<xsl:value-of select="." />
</dc:source>
</xsl:if>
<xsl:if
test="../apsite:adress != ''">
<dc:source>
<xsl:value-of select="../apsite:oldAddress" />
</dc:source>
</xsl:if>
我的空字符串測試有效,但缺少元素的測試無效,即test =“ not(apsite:apsite / apsite:address)”>無法正常工作。
有人可以告訴我我所缺少的嗎?
謝謝。
這個XSLT 1.0樣式表...
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:apsite="http://stackoverflow.com/questions/18524099"
xmlns:dc="some-other-url" >
<xsl:output indent="yes" omit-xml-declaration="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="apsite:address[.='']">
<dc:source>
<xsl:value-of select="'New value'" />
</dc:source>
<xsl:comment>'address' element was empty.</xsl:comment>
</xsl:template>
<xsl:template match="apsite:address[not(.='')]">
<dc:source>
<xsl:value-of select="." />
</dc:source>
<xsl:comment>Text of 'address' element was copied.</xsl:comment>
</xsl:template>
<xsl:template match="apsite:apsite[not(apsite:address)]">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<dc:source>
<xsl:value-of select="'New value'" />
</dc:source>
</xsl:copy>
<xsl:comment>'address' element was absent.</xsl:comment>
</xsl:template>
</xsl:stylesheet>
...依次應用於這3個可能的輸入文檔中的每個文檔時...
測試用例1:輸入文檔:
<apsite:apsite xmlns:apsite="http://stackoverflow.com/questions/18524099">
<apsite:name>John</apsite:name>
<apsite:address>Some Address</apsite:address>
</apsite:apsite>
測試案例2:輸入文檔:
<apsite:apsite xmlns:apsite="http://stackoverflow.com/questions/18524099">
<apsite:name>John</apsite:name>
<apsite:address></apsite:address>
</apsite:apsite>
測試案例3:輸入文檔:
<apsite:apsite xmlns:apsite="http://stackoverflow.com/questions/18524099">
<apsite:name>John</apsite:name>
</apsite:apsite>
...產量分別...
測試用例1的輸出:
<apsite:apsite xmlns:apsite="http://stackoverflow.com/questions/18524099">
<apsite:name>John</apsite:name>
<dc:source xmlns:dc="some-other-url">Some Address</dc:source>
<!--Text of 'address' element was copied.-->
</apsite:apsite>
測試案例2的輸出:
<apsite:apsite xmlns:apsite="http://stackoverflow.com/questions/18524099">
<apsite:name>John</apsite:name>
<dc:source xmlns:dc="some-other-url">New value</dc:source>
<!--'address' element was empty.-->
</apsite:apsite>
測試用例3的輸出:
<apsite:apsite xmlns:apsite="http://stackoverflow.com/questions/18524099">
<apsite:name>John</apsite:name>
<dc:source xmlns:dc="some-other-url">New value</dc:source>
</apsite:apsite>
<!--'address' element was absent.-->
我希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.