到目前为止,加载外部文档的唯一方法是对路径进行硬编码。我希望能够使用相对路径或变量。
我创建了一个Diazo规则,用于转换外部网页中的内容(称为“#footer-columns'”)并将其放置在我的主题页面中。
版本A - 此版本有效(请注意硬编码路径):
<replace css:theme-children=".footer-menu-row">
<xsl:for-each
select="document('http://example.com/footer-columns')//*/dl[contains(@class,'portletStaticText')]/dd"
><div class="w-col w-col-3">
<xsl:copy-of select="." />
</div>
</xsl:for-each>
</replace>
版本B - 此版本不起作用:
<replace css:theme-children=".footer-menu-row">
<xsl:for-each
select="document('{$portal_url}/footer-columns')//*/dl[contains(@class,'portletStaticText')]/dd"
><div class="w-col w-col-3">
<xsl:copy-of select="." />
</div>
</xsl:for-each>
</replace>
版本C - 绝对路径不起作用(实际上它返回错误):
<replace css:theme-children=".footer-menu-row">
<xsl:for-each
select="document('/footer-columns')//*/dl[contains(@class,'portletStaticText')]/dd"
><div class="w-col w-col-3">
<xsl:copy-of select="." />
</div>
</xsl:for-each>
</replace>
版本D - 相对路径不起作用(实际上它返回错误):
<replace css:theme-children=".footer-menu-row">
<xsl:for-each
select="document('footer-columns')//*/dl[contains(@class,'portletStaticText')]/dd"
><div class="w-col w-col-3">
<xsl:copy-of select="." />
</div>
</xsl:for-each>
</replace>
对于版本C和D,我得到相同的错误:
AttributeError:&#39; PersistentResourceDirectory&#39;对象没有属性 &#39; getPhysicalPath&#39;
答案 0 :(得分:0)
您需要为document()
方法提供节点集。 Diazo已经设置了一个名为diazo-base-document
的变量,其中包含正确的节点集。
尝试:
select="document('footer-columns', $diazo-base-document)//*/dl[contains(@class,'portletStaticText')"
答案 1 :(得分:0)
您可以在href="/footer-columns"
代码上指定replace
吗?