0
I have a source document:
<?xml version = "1.0" encoding = "UTF-8"?>
<Circuit revision="B" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Block name="Design">
<Data>
<Layer name="INDEX_4" Function="PLANE"></Layer>
<Layer name="INDEX_9" Function="CORE"></Layer>
<Group name="PRIMARY">
<SubGroup name="GROUP_PRIMARY">
<SubLayer Ref="INDEX_4" thickness="0.0350"></SubLayer>
<SubLayer Ref="INDEX_9" thickness="0.1000"></SubLayer>
</SubGroup>
</Group>
</Data>
</Block>
</Circuit>
該樣式表使用電流()提取對應的厚度:我有一個源文件:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:template match="/Circuit/Block/Data/Layer">
<xsl:element name="{name()}">
<xsl:attribute name="id">
<xsl:value-of select="@name"/>
</xsl:attribute>
<xsl:attribute name="Function">
<xsl:value-of select="@Function"/>
</xsl:attribute>
<xsl:value-of select="/Circuit/Block/Data/Group/SubGroup/SubLayer[@Ref=current()/@name]/@thickness"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
這裏的第二個樣式表,以提取PREVIOUS厚度值:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:template match="/Circuit/Block/Data/Layer">
<xsl:element name="{name()}">
<xsl:attribute name="id">
<xsl:value-of select="@name"/>
</xsl:attribute>
<xsl:attribute name="Function">
<xsl:value-of select="@Function"/>
</xsl:attribute>
<xsl:value-of select="/Circuit/Block/Data/Group/SubGroup/SubLayer[@Ref=preceding-sibling::*[1]/@name]/@thickness"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
在這兩種我得到這個案例:
<?xml version="1.0" encoding="UTF-8"?>
<Layer id="INDEX_4" Function="PLANE">0.0350</Layer>
<Layer id="INDEX_9" Function="CORE">0.1000</Layer>
我試過前面的兄弟姐妹得到前面的值 - 我想問題是「前面的兄弟姐妹的上下文是什麼?」
它是具有Layer元素的組還是具有SubLayer元素的組?
由於
拉爾夫乙
Martin, 這是一個救星!我永遠都不會這麼做 - 我已經瀏覽了很多書籍和網站。有什麼地方可以提供更多這樣的表達方式嗎? –
XSLT和XPath 1.0已有15年曆史,XSLT和XPath 2.0現在已有近10年的歷史了,所以肯定有很多教程和書籍,例如https://www.pluralsight.com/courses/ xslt-foundations-part1或http://www.cranesoftwrights.com/training/index.htm#ptux –
感謝您的鏈接 - 看起來不錯! Ralph B –