【问题标题】:Need to validate a string, whether it contains html or xml using xslt需要验证一个字符串,它是否包含使用 xslt 的 html 或 xml
【发布时间】:2011-04-21 19:55:23
【问题描述】:

我有一个xsl:variable,其内容可能是 HTML、XML 或二进制。

我在 html 页面的 textarea 中显示变量的值。

如果变量包含 HTML 或 XML 数据,则在 textarea 中以无格式显示。

<xsl:variable name="outputString">
//html or xml or binary data goes in here
</xsl:variable>
<xsl:template match="/">
<html>
<body>
<textarea name="output" cols="20" rows="20">
<xsl:value-of select="$outputString" />
</textarea>
</body>
</html>
</xsl:template>

如果内容是 HTML 或 XML,我只需要在 textarea 内以格式化的方式显示变量的内容。

【问题讨论】:

  • 您的问题是什么?是“如何判断文本字符串是HTML、xml还是二进制?”
  • @Naraen,是的。我需要使用 XSLT 确定文本字符串是 HTML 还是 XML 或二进制文件。
  • 迈克尔是对的。没有纯粹的 XSLT 方法可以做到这一点。您将不得不使用扩展程序。可用的扩展名取决于您使用的语言。你是用 Java、.NET 等做的吗?

标签: xslt xpath xslt-1.0


【解决方案1】:

您需要处理器扩展来完成这项工作,因此答案取决于您使用的 XSLT 处理器。

【讨论】:

  • +1 正确答案。在 XSLT 1.0 中,没有二进制或 HTML 数据类型。处理 XPath/XSLT 数据类型以外的其他类型需要扩展函数。
【解决方案2】:

好吧,我需要尝试一下,但我相信您可以执行以下操作

<xsl:if test="fn:contains($outputString, '<(.*)>.*<\1>')>
</xsl:if>

或者在你的情况下,我宁愿使用选择标签。

fn:contains() 用于 XSLT 2.0,我不确定它是否会接受该格式的正则表达式。甚至更多,因为有些地方使用 $1 而不是 \1 来引用组值。

如果您正在引用可以检测到它的 XML 或 HTML。

【讨论】:

  • 大家好,我正在使用XSLT 1.0.. 请帮助我使用XSLT 1.0 使用的任何扩展功能(exslt 更好)- Dinesh
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多