再次邀请其他程序员。
我有一个任务,我需要将omnipage18的xml输出转换为xml alto格式。
截至目前,我正在使用c#和linq来读取xml。
但我不知道输出是否正确。
我找到了一个PHP代码,它转换了abby finereader sdk xml output
,但我的要求是使用omnipage 18
,这是我的问题:
XSD (XML Schema Definition) is a World Wide Web Consortium (W3C) recommendation that specifies how to formally describe the elements in an Extensible Markup Language (XML) document.
我的问题是我真的不懂如何使用XSD文件。那么如何使用写入的XSD文件将omnipage xml转换为alto xml? 。 这个XSD如何引导我转换xml文件?
XSD文件用于定义XML格式的可能结构和内容。但是如何使用它作为创建XSLT文件的指南? (抱歉这个愚蠢的问题)
截至目前,这是我的c#代码
private string OmnitoAlto(string fileName)
{
StringBuilder alto = new StringBuilder();
try
{
XDocument document = XDocument.Load(fileName);
var coordinates = from r in document.Descendants().Where(e => e.Name.LocalName == "wd")
select new
{
HPOS = r.Descendants().Where(e => e.Name.LocalName == "ch").Select(n => n.Attribute("l").Value).ToArray(),
VPOS = r.Descendants().Where(e => e.Name.LocalName == "ch").Select(n => n.Attribute("r").Value).ToArray(),
chs = r.Descendants().Where(e => e.Name.LocalName == "ch").Select(n => n.Value).ToArray(),
};
foreach (var item in coordinates)
{
alto.Append("<String HPOS=\"" + item.HPOS.First() + "\" VPOS=\"" + item.VPOS.First() + "\" Width=\"" + (Double.Parse(item.VPOS.Last()) - Double.Parse(item.HPOS.First())) + "\" CONTENT=\"" + String.Join("", item.chs) + "\"/>" + Environment.NewLine);
}
}
catch (Exception ex)
{
Console.WriteLine("Message: " + ex.Message);
Console.WriteLine("Stacktrace: " + ex.StackTrace);
}
return alto.ToString();
}
以下是示例xml im converting
的链接