加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何使用XSLT在XML中散列字段

发布时间:2020-12-16 05:37:17 所属栏目:百科 来源:网络整理
导读:有一个 XML,我正在使用XSLT构建另一个XML.我希望某些字段具有哈希值而不是实际值.意思我应该知道数据何时被更改,但由于某些安全原因我不想知道数据. xsl:template name="sensitiveDataTemplate" xsl:param name="sensitiveData"/xsl:param xsl:if test="$sen
有一个 XML,我正在使用XSLT构建另一个XML.我希望某些字段具有哈希值而不是实际值.意思我应该知道数据何时被更改,但由于某些安全原因我不想知道数据.
<xsl:template name="sensitiveDataTemplate">
    <xsl:param name="sensitiveData"></xsl:param>
    <xsl:if test="$sensitiveData!=''">
        <xsl:value-of select="'XXXXXX'"></xsl:value-of>
    </xsl:if>
</xsl:template>

现在我只是用XXXXX替换数据,但我需要一些哈希值.

要生成哈希值,您可以注册自定义函数.

有关如何在xlst处理器中注册自定义php函数的信息,请参阅official documentation.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:php="http://php.net/xsl">
 <xsl:template name="sensitiveDataTemplate">
    <xsl:param name="sensitiveData"></xsl:param>
    <xsl:if test="$sensitiveData!=''">
        <xsl:value-of select="'php:some_hash_fun()'"></xsl:value-of>
    </xsl:if>
</xsl:template>
</xsl:stylesheet>

function some_hash_fun( )
{
    return "XXXX"; // hash value
}
$xmldoc = DOMDocument::loadXML($xml);
$xsldoc = DOMDocument::loadXML($xsl);

$proc = new XSLTProcessor();
$proc->registerPHPFunctions();  // can be either a string (a function name) or an array of functions.
$proc->importStyleSheet($xsldoc);
echo $proc->transformToXML($xmldoc);

希望能帮助到你.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读