小编mur*_*yju的帖子

Safari XSLT引擎在属性上丢失命名空间

我有一个匹配某些属性的XSLT,并将它们放在不同的命名空间中.这是一个简化版本:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns="urn:test:ns1"
    xmlns:ns2="urn:test:ns2">
    <xsl:output method="xml" indent="no" encoding="UTF-8"/>

    <!-- copy all nodes -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="@*[starts-with(local-name(), 'test-')]">
        <xsl:attribute name="ns2:{substring-after(local-name(), '-')}" namespace="urn:test:ns2">
            <xsl:value-of select="."/>
        </xsl:attribute>
    </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

这是一些示例输入:

<?xml version="1.0" encoding="UTF-8" ?>
<hello-world
    xmlns="urn:test:ns1"
    xmlns:ns3="urn:test:ns3"
    rootAttr="stays in implicit namespace"
    ns3:passMe="stays in the ns3 namespace"
    test-someRootAttr="goes into the ns2 namespace, pulls up ns declaration">
    <test
        defaultAttr="stays in implicit namespace"
        test-someAttr="goes into the ns2 namespace"
        ns3:namedAttr="stays in the ns3 namespace">
        Something …
Run Code Online (Sandbox Code Playgroud)

xml xslt safari mobile-safari xslt-1.0

10
推荐指数
1
解决办法
218
查看次数

innerHTML unncodes&lt; 在属性中

我有可能有一个HTML文档&lt;,并&gt;在某些属性.我试图提取它并通过XSLT运行它,但XSLT引擎错误告诉我<在属性内部无效.

我做了一些挖掘,发现它在源文档中被正确转义,但是当它通过innerHTMLDOM 加载到DOM中时,DOM 就不会对属性进行编码.奇怪的是,它这样做的&lt;&gt;,而不是一些人喜欢&amp;.

这是一个简单的例子:

var div = document.createElement('DIV');
div.innerHTML = '<div asdf="&lt;50" fdsa="&amp;50"></div>';
console.log(div.innerHTML)
Run Code Online (Sandbox Code Playgroud)

我假设DOM实现决定HTML属性可以不如XML属性严格,并且这是"按预期工作".我的问题是,如果不写一些可怕的正则表达式替换,我可以解决这个问题吗?

html javascript xml xslt innerhtml

6
推荐指数
1
解决办法
858
查看次数

具有常见传播模式的最新 Flow 中的“指数大量案例”错误

我经常使用以下模式来创建省略null/undefined属性的对象:

const whatever = {
  something: true,
  ...(a ? { a } : null),
  ...(b ? { b } : null),
};
Run Code Online (Sandbox Code Playgroud)

从流程版本 v0.112 开始,这会导致错误消息:

由于条件 [2] 和条件 [3] 都是联合,因此计算对象字面量 [1] 可能会导致大量情况下进行推理。请为每个价差使用最多一种联合类型以简化对价差结果的推理。您可以通过指定捕获联合的所有分支的更通用的类型来摆脱联合。

在我看来,这并不是真正的类型错误,只是 Flow 试图避免一些繁重的计算。这导致我的项目中出现了数十个流程错误,我需要以某种方式解决这些错误。是否有一些优雅的方法可以为这些提供更好的类型信息?我不想修改代码的逻辑,我相信它会按照我需要的方式工作(除非有人在这里也有更优雅的解决方案)。在我诉诸// $FlowFixMe所有这些之前,先在这里询问。

Try Flow 上的完整示例

flowtype

5
推荐指数
1
解决办法
579
查看次数

标签 统计

xml ×2

xslt ×2

flowtype ×1

html ×1

innerhtml ×1

javascript ×1

mobile-safari ×1

safari ×1

xslt-1.0 ×1