将XSLT函数子字符串嵌套在contains中

时间:2018-10-11 19:38:55

标签: xml function xslt nested contains

我可以正常工作,但是我想知道是否有一种方法可以将子字符串fx嵌套在包含功能中

XML:

<patientRole> 
    <telecom use="HP" value="tel:555-555-2004" />
    <telecom use="HP" value="mailto:aaeveryman@email.com" />

正在使用XSLT:

<xsl:variable name="PtTelecom" select="ClinicalDocument/recordTarget/patientRole/telecom/@value"/>
<xsl:variable name="PtPhoneNumber" select="$PtTelecom[contains(., 'tel')]"/>
<xsl:variable name="PtPhoneNumberFormat" select="substring-after($PtPhoneNumber, 'tel:')"/>
<xsl:variable name="PtEmail" select="$PtTelecom[contains(., 'mailto')]"/>
<xsl:variable name="PtEmailFormat" select="substring-after($PtEmail, 'mailto:')"/>

是否可以嵌套类似我想要的子字符串之后的tel:如果它包含tel:

<xsl:variable name="PtPhoneNumber" select="substring-after(contains($PtTelecom, 'tel'), 'tel:')"/>
<xsl:variable name="PtEmail" select="substring-after(contains($PtTelecom, 'mailto'), 'mailto:')"/>

这没有返回任何值,所以我觉得a)不能嵌套或b)我有问题。感谢您的帮助

1 个答案:

答案 0 :(得分:0)

所以,不要这样做...

<xsl:variable name="PtPhoneNumber" select="$PtTelecom[contains(., 'tel')]"/>
<xsl:variable name="PtPhoneNumberFormat" select="substring-after($PtPhoneNumber, 'tel:')"/>

执行此操作。

<xsl:variable name="PtPhoneNumberFormat" select="substring-after($PtTelecom[contains(., 'tel')], 'tel:')"/>

因此,您实际上是在用变量声明代替变量的使用。当然,您现在可以使用其他变量名了。...

<xsl:variable name="PtPhoneNumber" select="substring-after($PtTelecom[contains(., 'tel')], 'tel:')"/>

类似的电子邮件。.

<xsl:variable name="PtEmail" select="substring-after($PtTelecom[contains(., 'mailto')], 'mailto:')"/>