Open outofphase opened 2 years ago
I fix has already been committed for the extra newline in the metadata section. (Trims leading and trailing whitespace from Unified.)
Thank you Hanno and Don. I will try to dig a bit deeper into the issues that I found with Tablature then.
These are all with elaboration sections that span multiple lines. I think it has to do with duplication of data between documentation sections with purpose SYNOPSIS and with purpose ELABORATION.
The end result is that I can't now, with the new XML format, get a stable roundtrip: md -> xml -> md. A new set of documentation lines gets generated in the process. The new XML format looks better, but it is creating some strange results for me which I need to dig into.
In EP269 we had:
<fixr:code name="ExecutionReport" id="35009" value="8" sort="9">
<fixr:annotation>
<fixr:documentation purpose="SYNOPSIS">
ExecutionReport
</fixr:documentation>
<fixr:documentation purpose="ELABORATION">
The execution report message is used to:
1. confirm the receipt of an order
2. confirm changes to an existing order (i.e. accept cancel and replace requests)
3. relay order status information
4. relay fill information on working orders
5. relay fill information on tradeable or restricted tradeable quotes
6. reject orders
7. report post-trade fees calculations associated with a trade
</fixr:documentation>
</fixr:annotation>
</fixr:code>
followed by:
<fixr:documentation purpose="SYNOPSIS">
The execution report message is used to:
1. confirm the receipt of an order
2. confirm changes to an existing order (i.e. accept cancel and replace requests)
3. relay order status information
4. relay fill information on working orders
5. relay fill information on tradeable or restricted tradeable quotes
6. reject orders
7. report post-trade fees calculations associated with a trade
</fixr:documentation>
Now in EP272 we have:
<fixr:code name="ExecutionReport" id="35009" value="8" sort="9">
<fixr:annotation>
<fixr:documentation purpose="SYNOPSIS">
ExecutionReport</fixr:documentation>
<fixr:documentation purpose="ELABORATION">
The execution report message is used to:</fixr:documentation>
<fixr:documentation purpose="ELABORATION">
1. confirm the receipt of an order</fixr:documentation>
<fixr:documentation purpose="ELABORATION">
2. confirm changes to an existing order (i.e. accept cancel and replace requests)</fixr:documentation>
<fixr:documentation purpose="ELABORATION">
3. relay order status information</fixr:documentation>
<fixr:documentation purpose="ELABORATION">
4. relay fill information on working orders</fixr:documentation>
<fixr:documentation purpose="ELABORATION">
5. relay fill information on tradeable or restricted tradeable quotes</fixr:documentation>
<fixr:documentation purpose="ELABORATION">
6. reject orders</fixr:documentation>
<fixr:documentation purpose="ELABORATION">
7. report post-trade fees calculations associated with a trade</fixr:documentation>
</fixr:annotation>
</fixr:code>
followed by:
<fixr:annotation>
<fixr:documentation purpose="SYNOPSIS">
The execution report message is used to:</fixr:documentation>
<fixr:documentation purpose="SYNOPSIS">
1. confirm the receipt of an order</fixr:documentation>
<fixr:documentation purpose="SYNOPSIS">
2. confirm changes to an existing order (i.e. accept cancel and replace requests)</fixr:documentation>
<fixr:documentation purpose="SYNOPSIS">
3. relay order status information</fixr:documentation>
<fixr:documentation purpose="SYNOPSIS">
4. relay fill information on working orders</fixr:documentation>
<fixr:documentation purpose="SYNOPSIS">
5. relay fill information on tradeable or restricted tradeable quotes</fixr:documentation>
<fixr:documentation purpose="SYNOPSIS">
6. reject orders</fixr:documentation>
<fixr:documentation purpose="SYNOPSIS">
7. report post-trade fees calculations associated with a trade</fixr:documentation>
</fixr:annotation>
@outofphase you are quoting two different sections of the Orchestra XML file, there is no duplication:
The second snippet you quote above is missing the beginning for which it is an annotation (always comes at the end of a message definition):
<fixr:message name="ExecutionReport" id="9" category="SingleGeneralOrderHandling" added="FIX.2.7" abbrName="ExecRpt" msgType="8">
The extra newline issue remains and is being looked into by @donmendelson.
In the Unified Repository phrases file, a <phrase>
element can contain any number of <para>
elements, as in the case of the numbered list mentioned by @outofphase. In the Orchestra schema, an <annotation>
can contain any number of <documentation>
elements (as well as <appinfo>
). The logic of the Python orchestra-transposer script is to turn each <para>
into a <documentation>
while the XSLT just joined the paragraphs with newlines. A rationale for the Python method is that we are not restricted to storing documentation as plain text in Orchestra, and different markups have different paragraph notations. In fact the preferred documentation format in the future will be markdown, but other formats are possible, e.g. <p>
for paragraph in HTML. A tool can render the format according to the contentType
attribute that stores the media type (formerly MIME). The default value is "text/plain".
To control format, it would useful to turn those numbered lists into markdown in Orchestra when we are no longer dependent on conversion from Unified.
Tablature behavior needs to be tested:
I also found that the initial <?xml version="1.0" encoding="UTF-8"?>
is missing.
And the xmlns:fixml
reference xmlns:fixml="http://fixprotocol.io/2022/orchestra/appinfo/fixml"
points to a not-existing page.
@JThoennes you are correct that the appinfo/fixml schema has not yet been made public. It is used internally to mark elements for FIXML schema generation. The appinfo element is extensible with
<xs:any processContents="lax"/>
The lax processing is supposed to inform an XML processor that if the schema cannot be found, no errors should be reported. Your experience may be different.
The lack of xml declaration is an error; we will look into it.
And the xmlns:fixml reference xmlns:fixml="http://fixprotocol.io/2022/orchestra/appinfo/fixml" points to a not-existing page.
@JThoennes the XML namespace reference is not a URL, but a URI to establish a unique identifier for the prefix. We simply chose the resource name to look like a URL.
@kleihan My IntelliJ IDE marks this URI as an error because it cannot be downloaded. I will try to register it locally. I currently assume that the IDE has a good understanding of XML and report any findings here.
The format of the FIX Latest Orchestra XML file has changed substantially between EP269 and EP272, see below for snippet. This has caused various issues in my build process, and there is possibly an incompatibility of this new format with the tablature tools. Before I dig into this much further, can I ask whether this change was intentional?