小编mmk*_*mkd的帖子

XSLT错误产生"模糊规则匹配"

我正在尝试为两种情况进行匹配:

  1. 字符串包含的字符不仅仅是数字
  2. 字符串超过8个字符.

所以XSLT是:

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:strip-space elements="*"/>

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

    <xsl:template match="record[translate(employeeNumber, 'abcdefghijklmnopqrstuvwxyzABCDEFGHILKLMNOIPQRSTUVWXYZ!£$%^', '')]"/>
    <xsl:template match="record[string-length(employeeNumber) &lt; 9]"/>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

测试数据是:

<?xml version="1.0" encoding="UTF-8"?>
<request>
    <records>
        <record>
            <employeeNumber>12345678</employeeNumber>
        </record>
        <record>
            <employeeNumber>1234567A</employeeNumber>
        </record>
        <record>
            <employeeNumber>12345678A</employeeNumber>
        </record>
        <record>
            <employeeNumber>123456789</employeeNumber>
        </record>
    </records>
</request>
Run Code Online (Sandbox Code Playgroud)

这是应该返回的:

<?xml version="1.0" encoding="UTF-8"?>
<request>
    <records>
        <record>
            <employeeNumber>1234567A</employeeNumber>
        </record>
        <record>
            <employeeNumber>12345678A</employeeNumber>
        </record>
        <record>
            <employeeNumber>123456789</employeeNumber>
        </record>
    </records>
</request>
Run Code Online (Sandbox Code Playgroud)

然而,正如我在氧气中所说,我得到错误:

Severity: warning Description: Ambiguous rule match for /request[1]/records[1]/record[1] Matches both "record[string-length(employeeNumber) < 9]" on …

xslt match

7
推荐指数
2
解决办法
5198
查看次数

MYSQL - 使用逗号分隔字符串作为变量输入的存储过程

我希望有人能够提供帮助.我已经创建了我的第一个存储过程(没有任何幻想)但是我遇到了一个问题.

我想给它一个字符串输入,如1,2,3,4,5然后它做一个简单的 SELECT * FROM [TABLE] WHERE EAN IN (VAR);

所以存储的proc看起来像这样:

-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE PROCEDURE `moments`.`new_procedure`(IN var1 VARCHAR(255))
BEGIN

SELECT * FROM moments.PRODUCT WHERE EAN IN (var1);

END
Run Code Online (Sandbox Code Playgroud)

我正试图像这样执行它:

作品

call moments.new_procedure('5045318357397')
Run Code Online (Sandbox Code Playgroud)

不起作用

call moments.new_procedure('5045318357397,5045318357427');
Run Code Online (Sandbox Code Playgroud)

这会执行但不会带回任何结果.它是否将第二个语句分类为字符串,所以它这样做:

select * from moments.PRODUCT WHERE EAN IN ('5045318357397,5045318357427')
Run Code Online (Sandbox Code Playgroud)

而不是这个:

select * from moments.PRODUCT WHERE EAN IN ('5045318357397','5045318357427')
Run Code Online (Sandbox Code Playgroud)

如何在执行查询中格式化输入以使其以逗号分隔的字符串作为输入?

mysql stored-procedures

7
推荐指数
1
解决办法
7050
查看次数

node()| @*是什么意思XSLT?

我已经看到在这个问题中使用了这个:

<xsl:template match="node()|@*">
<xsl:copy>
  <xsl:apply-templates select="node()|@*"/>
</xsl:copy>
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释"node()| @*"的意思吗?

xml xslt

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

XSLT - 复制所有其他节点,添加1个新节点

我创建了一个XSLT,我想知道如何在一组标签之间复制所有节点,并在底部添加另一个标签.我创建了XSLT,它具有确定要添加哪个标记以及应该调用的标记的所有逻辑.但是我现在遇到的问题是我无法复制所有其他标签.以下是有问题的文件:

XSLT

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

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

    <xsl:template match="/csvImportSchema">
        <csvImportSchema>
            <xsl:for-each select="payload">
                <payload>
                    <xsl:copy-of select="@*"/>
                    <xsl:variable name="ean">
                        <xsl:value-of select="ean"/>
                    </xsl:variable>
                    <xsl:for-each select="../product">
                        <xsl:if test="ean = $ean">
                            <productId><xsl:value-of select="article"/></productId>
                        </xsl:if>
                    </xsl:for-each>
                </payload>
            </xsl:for-each>
        </csvImportSchema>
    </xsl:template>

</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

INPUT

<?xml version="1.0" encoding="UTF-8"?>
<csvImportSchema>
    <payload>
        <test>1</test>
        <test2>2</test2>
        <test3>3</test3>
        <ean>1111111111</ean>
        <productId/>
    </payload>
    <product>
        <article>722619</article>
        <ean>1111111111</ean>
    </product>
</csvImportSchema>
Run Code Online (Sandbox Code Playgroud)

当前输出

<?xml version="1.0" encoding="utf-8"?>
<csvImportSchema>
    <payload>
        <productId>722619</productId>
    </payload>
</csvImportSchema>
Run Code Online (Sandbox Code Playgroud)

期望的输出

<?xml version="1.0" encoding="UTF-8"?>
<csvImportSchema>
    <payload>
        <test>1</test>
        <test2>2</test2> …
Run Code Online (Sandbox Code Playgroud)

xml xslt

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

JavaScript - 从字符串中删除单位分隔符(Unicode:0x1f)字符

如何使用 JavaScript 从字符串中删除单位分隔符(Unicode:0x1f)?

我有一个正在创建 xml 的字符串,但是单位分隔符字符使 XML 无效。JavaScript 有没有办法去掉这样的字符?

我已经尝试过这个但它不起作用:

input.replace('/\c_/g', '');

javascript special-characters

3
推荐指数
1
解决办法
3846
查看次数

在Perl中,如何从日志文件中的行中提取电子邮件地址?

我希望修剪一个字符串,该字符串将逐行读取文件.但是,我只想从字符串中提取电子邮件,但每次都会更改.例如,唯一的内容是域名@domain.com.

所以对于输入字符串

 00:00:50,004 ERROR [SynchronousCallback] Cannot process resource: test.test@domain.com  Channel: channel16
Run Code Online (Sandbox Code Playgroud)

什么正则表达式将寻找@domain.com并拉出所有test.test@domain.com.我有一个正在寻找字符串的正则表达式m/@domain.com/i但我不知道如何@domain.com在整个字符串中定位后操作字符串.

我希望输出只是电子邮件 test.test@domain.com

regex perl

2
推荐指数
1
解决办法
3137
查看次数