使用XPath选择xsl:for-each正常序列之外的节点



我有以下XML代码:

<?xml version="1.0" encoding="UTF-8"?>
<Collection>
    <Content>
        <ID>12</ID>
        <Type>Content</Type>
        <Title>Office Location #1</Title>
        <QuickLink>/office.aspx?id=12</QuickLink>
        <Teaser>
            <p>
                <span class="infoBold">My Group</span>
                <br />
                WPO
                <br />
                Office Location #1
                <br />
                Wp, NY 090801
                <br />
                986.362.3265
            </p>
        </Teaser>
        <Html>
            <root>
                <Location>
                    <location />
                    <office>WPO</office>
                    <Address>
                        <image>
                            <img src="someing.png" />
                        </image>
                        <Address1>Office Location #1</Address1>
                        <Address2 />
                        <City>Wp</City>
                        <State>NY</State>
                        <zip>09081</zip>
                        <phone>986.362.3265</phone>
                        <fax />
                        <urgent_care_phone />
                    </Address>
                </Location>
            </root>
        </Html>
    </Content>
    <Content>
        <ID>48</ID>
        <Type>Content</Type>
        <Title>Office Location #3</Title>
        <QuickLink>/office.aspx?id=48</QuickLink>
        <Teaser>
            <p>
                <span class="infoBold">My Group</span>
                <br />
                WPO
                <br />
                Office Location #3
                <br />
                Wp, NY 090801
                <br />
                986.362.3265
            </p>
        </Teaser>
        <Html>
            <root>
                <Location>
                    <location />
                    <office>WPO</office>
                    <Address>
                        <image>
                            <img src="someing.png" />
                        </image>
                        <Address1>Office Location #3</Address1>
                        <Address2 />
                        <City>Wp</City>
                        <State>NY</State>
                        <zip>09081</zip>
                        <phone>986.362.3265</phone>
                        <fax />
                        <urgent_care_phone />
                    </Address>
                </Location>
            </root>
        </Html>
    </Content>
    <Content>
        <ID>36</ID>
        <Type>Content</Type>
        <Title>Office Location #2</Title>
        <QuickLink>/office.aspx?id=36</QuickLink>
        <Teaser>
            <p>
                <span class="infoBold">My Group</span>
                <br />
                WPO
                <br />
                Office Location #2
                <br />
                Wp, NY 090801
                <br />
                986.362.3265
            </p>
        </Teaser>
        <Html>
            <root>
                <Location>
                    <location>WP</location>
                    <office>WPO</office>
                    <Address>
                        <image>
                            <img src="someing.png" />
                        </image>
                        <Address1>Office Location #2</Address1>
                        <Address2 />
                        <City>Wp</City>
                        <State>NY</State>
                        <zip>09081</zip>
                        <phone>986.362.3265</phone>
                        <fax />
                        <urgent_care_phone />
                    </Address>
                </Location>
            </root>
        </Html>
    </Content>
</Collection>

我想显示以下格式:

FOR EACH ENTRY inside `Collection/Content/`:
    Html/root/Location/location (if not blank show it)
    Html/root/Location/Address {
        /Address1
        /Address2 (if not blank show it)
        /City
        /State
        /zip
        /phone
        /fax (if not blank show it)
    }
    Html/root/Location/location (if not blank show it)
    Html/root/Location/Address {
        /Address1
        /Address2 (if not blank show it)
        /City
        /State
        /zip
        /phone
        /fax (if not blank show it)
    }
    Html/root/Location/location (if not blank show it)
    Html/root/Location/Address {
        /Address1
        /Address2 (if not blank show it)
        /City
        /State
        /zip
        /phone
        /fax (if not blank show it)
    }

我正在尝试获取QuickLink

<xsl:for-each select="Collection/Content/Html">
    <div class="serviceHolder brClear">
        <xsl:value-of select="root/Location/Address/Address1" />
        <xsl:value-of select="root/Location/Address/Address2" />
        <xsl:value-of select="root/Location/Address/City" />
        <xsl:value-of select="root/Location/Address/State" />
        <xsl:value-of select="root/Location/Address/zip" />
        <xsl:value-of select="root/Location/Address/phone" />
        <a href="{QuickLink}" title="Test">Get Direction</a>
    </div>
</xsl:for-each>

虽然我在for each中使用Collection/Content/Html,但如何返回到Collection/Content/QuickLink以获取此处的锚链接:

<a href="{QuickLink}" title="Test">Get Direction</a>

对于a生成问题,通过更改:使XPath到QuickLink相对于xsl:for-each中的上下文节点

<a href="{QuickLink}" title="Test">Get Direction</a>

<a href="{../QuickLink}" title="Test">Get Direction</a>

至于通过为您编写XSLT来用HTML生成其余的伪标记,我更愿意帮助解决特定的问题,而不是为您编写代码。如果您有任何其他具体问题,请告诉我们。

最新更新