- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
是否可以创建 schematron 程序集,就像我们可以将 .xsd 模式编译成程序集并部署到 Biztalk 或其他应用程序(使用 BTSCompile 构建操作)一样?
例如,我们有一个从 HL7v3 模式构建的常规程序集,我有一个应用程序可以从程序集中加载模式作为 XmlSchema,并使用它来验证 XML。在这种情况下它工作正常。
这是我所说的基本概念:
public static XmlSchema LoadSchema(System.Type schemaType)
{
if (schemaType == null)
{
throw new NullReferenceException("schemaType cannot be null. Pass a valid object type.");
}
XmlSchema schema = new XmlSchema();
try
{
// Grabbing an Assembly that is loaded for the type we're after.
Assembly schemaAssembly = Assembly.GetAssembly(schemaType);
foreach (Type type in schemaAssembly.GetTypes())
{
if (typeof(SchemaBase).IsAssignableFrom(type) && !type.IsNested && type.Name == schemaType.Name)
{
schema = (Activator.CreateInstance(type) as SchemaBase).Schema;
break;
}
}
}
catch (Exception ex)
{
throw new Exception("Could not Load Schema assembly.", ex);
}
return schema;
}
但是,如果我尝试对 Schematron 执行相同的操作,我将无法使用 BTSCompile Build Action 对其进行编译,我认为这是能够“查看”程序集中的模式所必需的。
目前我使用的 Schematron 文件基本上是这样的:
<?xml version="1.0" encoding="utf-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron" xmlns:sch="http://www.ascc.net/xml/schematron" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.ascc.net/xml/schematron http://www.ascc.net/xml/schematron/schematron1-5.xsd" xmlns:hl7="urn:hl7-org:v3">
<title>Schematron Rule Definitions</title>
<ns uri="urn:hl7-org:v3" prefix="hl7"/>
<ns uri="http://www.w3.org/2001/XMLSchema-instance" prefix="xsi"/>
<!-- Rules that pertain to multiple sections of the CDA -->
<pattern name="Header - Test">
<rule context="/">
<assert test="hl7:ClinicalDocument">
ClinicalDocument must be the root node with the namespace urn:hl7-org:v3.
</assert>
</rule>
</pattern>
</schema>
我在尝试编译时收到的错误是:
The root element of a W3C XML Schema should be <schema> and its namespace should be 'http://www.w3.org/2001/XMLSchema'.
那么,当我按照它当然说的去做时:
The 'title' element is not supported in this context
因为它们不是有效的 xml 架构元素。所以现在我的问题是:有没有办法做我想在这里做的事情?我不是很精通 XML 模式,所以我可能忽略了一些简单的事情。
最佳答案
您可以使用 xs:annotation 元素将 schematron 规则嵌入到 XML 模式中(就像 Microsoft 对 BizTalk flat file schemas 所做的那样)。这将允许您将 schematron 规则编译到 BizTalk 程序集中。可以在 this older MSDN article 中找到示例模式.
但是,BizTalk 将忽略注释。如果您想使用这些规则,您需要告诉 BizTalk 如何去做。
您可以编写自定义管道组件来执行 schematron 验证,也许依赖于 the Schematron.net library .或者您可以使用开源管道组件,例如 the Schematron XmlValidator Pipeline Component for BizTalk (我自己没有用过)。如果您想编写一个验证整个 xml 文档的管道组件(而不是像默认的 XML 验证组件那样只在第一次错误时失败),请查看 Saravana Kumar 的 blog post on the matter .
关于c# - 是否可以将 schematron 架构编译成 Biztalk 程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13406412/
我已使用 Microsoft BizTalk 默认管道“XMLReceive”将 XML 放入接收位置,然后使用 PassThroughTransmit 将文件输出到目录。 但是,如果使用十六进制编辑
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我遇到了慢速(自定义)BizTalk 适配器的问题。 每天晚上,应用程序会在几分钟内向 MSMQ 发送超过 10,000 条消息。 不幸的是,BizTalk 需要几个小时来处理它们。 我没有任何编排,
我的项目中有 2 个编排和 2 个模式(第一个用于请求,第二个用于响应)。Orchestration 1有一个 Receive形状(激活=真)。它收到一个请求,然后将它路由到 Orchestratio
我有一个接收端口,其中两个文件接收位置轮询同一网络共享。接收位置之间的唯一区别是它们使用不同的文件掩码。它们都使用带有单个平面文件反汇编器组件的自定义管道。我有一个订阅接收端口的发送端口。 (这只是我
单个 Biztalk Server 可以有多个主机进程。是否可以为每个主机进程创建一个应用程序配置文件?例如,我想使用 Unity 或 log4net 或任何需要此类配置文件的东西。 编辑:感谢大卫·
我有一个带有文件接收位置的应用程序。主机实例运行几个小时后,接收位置无法识别放入其正在监视的文件夹中的新文件。它并没有完全忘记它们,只是性能变得越来越慢。接收位置配置为每 60 秒轮询一次目标文件夹,
我在配置Biztalk 2016 Group时遇到问题 [2017-01-06 16:25:27:0170错误BtsCfg]服务器尚未配置。 若要配置服务器,请运行BizTalk Server配置向导
我已经阅读了将 BizTalk 解决方案拆分为多个项目的良好做法,并且看到了关于拆分的确切性质的一些争论,例如... - 可以按工件拆分,即模式、编排、 map 等。 - 可以按功能拆分 但是有什么好
如何在知道业务流程名称的情况下动态调用 BizTalk 业务流程? 调用编排形状需要在设计时知道编排的名称和参数。我试过使用'call' XLang 关键字,但它还需要编排名称作为设计时间,就像表达式
我对 BizTalk 和创建自定义管道组件相当陌生。我在示例中看到过类似于以下内容的代码: public void Disassemble(IPipelineContext pContext, IBa
问题: 我正在尝试根据其输入文件名转换和路由消息。文件名提供了有关如何处理数据的提示。作为一个菜鸟,我有理由确定我这样做很困难...... 我创建了一个编排。我将消息从输入模式转换为输出模式。我想检查
我的bizTalk应用程序部署在主动-被动集群中。我需要安排其中一个主机实例的重新启动(每天,每天早上)。我如何知道如何获取事件主机实例,因为它可能是其中任何一个,因为可能会发生故障转移?我尝试停止/
下午好, 我正在尝试在发送端口中设置输出文件名,但可用的文件名宏无法正常工作。 我需要“file.YYYYMMDD_HHMMSS”形式的内容。有一个日期时间组合宏(格式错误)、一个仅时间宏,但没有仅日
我想将我的数据库连接到 CRM,据我所知,BizTalk 是最佳选择。我知道 BizTalk 有自己的消息传递系统,但是考虑到我的数据的稳定性是否足够,或者我应该在两者之间放置一个消息总线? 最佳答案
我在 BizTalk 中有一个 MSMQ 发送端口,该端口配置为使用有序传递发送消息。当端口发送了一批消息后,它会将端口的一个实例保留为事件的运行实例。 我仍然以正确的顺序收到正确的文件,但我必须手动
是否有人编写过一个查询来同时监视所有 BizTalk 工件。 我的查询不起作用,而且我似乎无法完成它: 这是我的: select RL.Name AS rlName , ('Url:
我们有一个 BizTalk 2010 接收位置,它将获取一个 70MB 的文件,然后使用入站映射(在接收位置)和出站映射(在发送端口)生成一个 1GB 文件。 执行上述过程时,SQL Server 会
无论如何,BizTalk 接收端口是否可以初始化编排,拉入 FailedMessages,否则这些 FailedMessages 可以使用对存在的 ErrorType 及其发生的原始端口名称进行过滤来
我们有多个 BizTalk 2006 应用程序服务器,我发现几乎不可能在它们上保持项目版本同步。部署 MSI 包、导入它们、匹配 GAC 中的文件、部署一些注册表更改是一个繁琐的过程,如果遗漏了一个步
我是一名优秀的程序员,十分优秀!