以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 XSL/XSLT/XSL-FO/CSS 』 (http://bbs.xml.org.cn/list.asp?boardid=8) ---- 求助,请问此xslt如何写? (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=61374) |
-- 作者:songyz -- 发布时间:4/15/2008 10:56:00 AM -- 求助,请问此xslt如何写? [size=4]我打算实现一个内容抽取的数字签名,基于xml数字签名规范的,下面是我的签名片段,由于全部文件篇幅比较长,这里只列出比较关键的几个部分: // <Reference> 元素 <Reference URI="#obj1"> <Transforms> <Transform Algorithm="http://a.edu.cn/tranforms/ces#VerifyPolicy" /> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>XGesfrCnr8KuXCBmwlb4ofheksg=</DigestValue> </Reference> 。。。 <Object Id="obj1"> 这是数字签名的基本结构里的内容,现在我想实现如下的变换处理。 说明: 这里的输出就是一个字节流,用来生成<Reference>元素的子元素<DigestValue>的值。 |
-- 作者:songyz -- 发布时间:4/15/2008 12:50:00 PM -- 怎么没有人回答呢,大家给想想办法 |
-- 作者:songyz -- 发布时间:4/22/2008 9:58:00 AM -- ding |
-- 作者:songyz -- 发布时间:4/22/2008 10:14:00 AM -- 或者在java中自定义一个transform来处理<Reference>所引用的内容。 |
-- 作者:Qr -- 发布时间:4/22/2008 12:40:00 PM -- 1、2、3点都很容易,第4点不明白,就是摘要值如何计算?另外,“输出就是一个字节流”,输出到哪里?“用一个xslt来实现一个变换处理”,是XML变换到XML吗,不明白,给个示例吧。晚饭后也许我可以给你一个答案…… |
-- 作者:songyz -- 发布时间:4/22/2008 2:07:00 PM -- 首先谢谢你的回答! 其实并不一定要写一个xslt的处理,可以用程序生成一个transform对象,用于对xml文件进行处理,计算摘要,是不是可以调用java类里面自定义的一个方法。不知道你对XML数字签名是否了解一些,我是用这个自定制的xslt来做抽取签名的,xslt的定义不能输出一个字节流吗? |
-- 作者:Qr -- 发布时间:4/22/2008 6:24:00 PM -- 1、先取URI作为变量(你的URI中有特殊字符,下面的用法我不保证,因为我没去测试),如 <xsl:variable name="tmp" select="Reference/@URI"/> 然后通过 <xsl:apply-templates select="Object[@Id='substring($tmp,2)'>"/> 即可“找到<Object>元素的全部内容”,至于如何处理,你自己写代码。 2、3、<xsl:choose> <xsl:when test="Digest"><!--存在Digest节点--><!--注意路径--> <xsl:value-of select="(.,../@CASE)"/><!--这里将Digest和CASE连接,具体看需要吧--> </xsl:when> <xsl:otherwise><!--不存在Digest节点,即存在Salt节点--><!--因为至少存在一个Salt,所以直接用xsl:otherwise没问题--> 4、至于“根据<Fragment>元素的URI属性找到相应内容”可写在此处,你可参照1法处理。XSL中并没有“计算摘要值”的功能,一般使用外部程序或参阅XML与数字内容安全相关知识。 </xsl:otherwise> </xsl:choose> 只能提供个思路给你了,根据需要去发挥吧。希望对你有帮助。
|
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
46.875ms |