<?xml version="1.0" encoding="UTF-8"?>
<idmef:IDMEF-Message version="1.0" xmlns:idmef="http://iana.org/idmef">
<idmef:Alert messageid="abc123456789">
<idmef:Analyzer analyzerid="bc-corr-01">
<idmef:Node category="dns">
<idmef:name>correlator01.example.com</idmef:name>
</idmef:Node>
</idmef:Analyzer>
<idmef:CreateTime ntpstamp="0xbc72423b.0x00000000">2000-03-09T15:31:07Z
</idmef:CreateTime>
<idmef:Source ident="a1">
<idmef:Node ident="a1-1">
<idmef:Address ident="a1-2" category="ipv4-addr">
<idmef:address>192.0.2.200</idmef:address>
</idmef:Address>
</idmef:Node>
</idmef:Source>
<idmef:Target ident="a2">
<idmef:Node ident="a2-1" category="dns">
<idmef:name>www.example.com</idmef:name>
<idmef:Address ident="a2-2" category="ipv4-addr">
<idmef:address>192.0.2.50</idmef:address>
</idmef:Address>
</idmef:Node>
<idmef:Service ident="a2-3">
<idmef:portlist>5
</idmef:portlist>
</idmef:Service>
</idmef:Target>
<idmef:Classification text="Login Authentication">
<idmef:Reference origin="vendor-specific">
<idmef:name>portscan</idmef:name>
<idmef:url>http://www.vendor.com/portscan</idmef:url>
</idmef:Reference>
</idmef:Classification>
<idmef:Assessment>
<idmef:Impact severity ="high" completion ="failed" type ="file" >
</idmef:Impact>
</idmef:Assessment>
</idmef:Alert>
</idmef:IDMEF-Message>
我正在使用xml邮件系统,其中从队列中读取邮件数据包,并对其中包含模式的规则应用。如果模式匹配,则触发规则并读取和存储xml的一些元素,节点等。使用Xpath表达式定义要从消息中读取的内容的定义。例如,以下xpath采用severity属性并存储它。
name.set( “.// IDMEF:分类/ IDMEF:Assesment / IDMEF:影响/ @严重性”, “高”);
所以,我会接受该xpath,编译它,并读取serverity属性并存储以供后者使用。
当我使用存储的值创建新的XML消息时,可能存在completion和type属性是必需的。
所以问题是,如何检查是否需要写出这些属性。我知道架构是以某种方式涉及的,但你是如何做到的。更重要的是,如果用户只选择严重性属性,我将如何进行,添加结构的其余部分,如分类,消息和其他元素,如果有额外的xpath查找,例如在
鲍勃。
答案 0 :(得分:0)
评论者是正确的 - 您需要先修复XML以使其形成良好。
但是,如果我正确理解您的问题,您需要写出一些XML,添加或更改某些属性。
如果这是你需要的,我会尝试使用XSL转换来添加属性。 以下是身份变换的修改版本,应该接近您的需要。 如果你需要一些条件逻辑,那么用xsl:if
包围属性标签<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:idmef="http://iana.org/idmef" xpath-default-namespace="http://iana.org/idmef">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Impact">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:attribute name="severity">high</xsl:attribute>
<xsl:attribute name="completion">failed</xsl:attribute>
<xsl:attribute name="type">file</xsl:attribute>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
你可以:
这有什么意义吗?
答案 2 :(得分:0)
我在stackoverflow上找到了答案,就在这里。 Create XML Nodes from XPath我知道它与我上面的描述相差甚远,但在我设计时,我 没有scobie它会如何工作。