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>
このスタイルシート(電流を使用して)は、対応する厚さを抽出:Iは、ソース文書有する:
<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要素を持つグループは、グループですか?
おかげで任意の述語内
ラルフB
Martin、 これは命の恩人です!私は決してそれを働かなかったでしょう - そして私はそれのための多くの本とウェブサイトを徘徊しました。そのような表現の例をもっと与えるどこかにありますか? –
XSLTとXPath 1.0は15歳以上ですが、XSLTとXPath 2.0は10年近く経っていますので、多くのチュートリアルや書籍があります(https://www.pluralsight.com/courses/を参照)。 xslt-foundation-part1またはhttp://www.cranesoftwrights.com/training/index.htm#ptux –
リンクをありがとう - よく見えます! Ralph B –