Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,11 @@ The repository ships two NuGet packages that version independently: **ReqIFSharp
### Added

- `AttributeValueXHTML.ExtractNormalizedTextFromValue(bool keepLineBreaks = false)` returns the text of an XHTML value as plain text: runs of spaces, tabs and line breaks are collapsed to one space (non-breaking spaces are kept), no space is added around inline elements, and block elements such as paragraphs and list items are separated by a space or, with `keepLineBreaks`, by a line feed. The text of a `pre` element is kept as written, and HTML named entities such as ` ` are turned into their characters. `ExtractUnformattedTextFromValue` is unchanged ([#92](https://github.com/STARIONGROUP/ReqIFSharp/issues/92)).
- `AccessControlledElement.IsEditableSpecified` tells whether the `IS-EDITABLE` attribute is written. It is true when the attribute was present in the document that was read or when `IsEditable` was set; set it to false to leave out an `IS-EDITABLE` that is false ([#86](https://github.com/STARIONGROUP/ReqIFSharp/issues/86)).

### Changed

- Setting `IsEditable` to false on a spec hierarchy or attribute definition now writes `IS-EDITABLE="false"`; before, the attribute was left out. Both mean that the element is read-only. Set `IsEditableSpecified` to false to leave the attribute out ([#86](https://github.com/STARIONGROUP/ReqIFSharp/issues/86)).
- The source files carry the licence in short SPDX form (`SPDX-FileCopyrightText: 2017-2026 Starion Group S.A.`, `SPDX-License-Identifier: Apache-2.0`) instead of the full Apache-2.0 notice; the licence itself is unchanged, and `NOTICE` now gives the same years, 2017-2026 ([#103](https://github.com/STARIONGROUP/ReqIFSharp/issues/103)).
- A `REQ-IF` root element in a namespace other than the ReqIF namespace (`http://www.omg.org/spec/ReqIF/20110401/reqif.xsd`) is no longer read as a ReqIF document; it is skipped and a warning is logged. Before, such an element was read when it had no prefix. A root in no namespace is still read ([#87](https://github.com/STARIONGROUP/ReqIFSharp/issues/87)).
- An element other than `SPEC-RELATION-REF` inside the `SPEC-RELATIONS` of a relation group is now skipped with a warning, and the references after it are read. Before, it caused an `XmlException` ([#94](https://github.com/STARIONGROUP/ReqIFSharp/issues/94)).
Expand All @@ -25,6 +27,8 @@ The repository ships two NuGet packages that version independently: **ReqIFSharp
- A document without whitespace between its elements (minified XML) lost data without an error: every other header field (such as `CREATION-TIME` and `REQ-IF-TOOL-ID`) and every other enumeration value of an attribute value was skipped, and the spec relations of a relation group were not read or caused an `XmlException` ([#94](https://github.com/STARIONGROUP/ReqIFSharp/issues/94)).
- `AttributeValueXHTML.TheOriginalValue` was not read from `THE-ORIGINAL-VALUE`, so it was always `null` after reading, and a document that was read and written again lost the original values of its simplified XHTML attribute values ([#95](https://github.com/STARIONGROUP/ReqIFSharp/issues/95)).
- Attribute values did not log anything, also when an `ILoggerFactory` was passed to the deserializer: the `AttributeValue` constructors did not keep the logger factory. An enumeration attribute value no longer reports its own element and its `DEFINITION` and `VALUES` elements as not supported ([#97](https://github.com/STARIONGROUP/ReqIFSharp/issues/97)).
- An explicit `IS-EDITABLE="false"` on a spec hierarchy or attribute definition was dropped when a document was read and written again, so the receiving tool fell back to its own default. It is now written whenever it was read or `IsEditable` was set, also when it is false; an element without the attribute is still written without it ([#86](https://github.com/STARIONGROUP/ReqIFSharp/issues/86)).
- Writing a spec hierarchy or attribute definition that has an `ALTERNATIVE-ID` threw an `InvalidOperationException` when it was editable or, for a spec hierarchy, `IS-TABLE-INTERNAL`: those attributes were written after the `ALTERNATIVE-ID` element ([#86](https://github.com/STARIONGROUP/ReqIFSharp/issues/86)).
- `new AttributeValueXHTML(loggerFactory)` left `ExternalObjects` `null`, so `QueryExternalObjects` and `QueryBase64PayloadsAsync` of ReqIFSharp.Extensions threw for a spec element that held such a value. `new AttributeValueXHTML()` left its logger `null`, so reading into it threw ([#98](https://github.com/STARIONGROUP/ReqIFSharp/issues/98)).

## [10.1.2] - 2026-10-18
Expand Down
1 change: 1 addition & 0 deletions ReqIFSharp.Tests/Decorators/ModelMetadataTestFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ public class ModelMetadataTestFixture
"DatatypeDefinition", // AttributeDefinition base accessor that aliases the concrete Type
"AttributeDefinition", // AttributeValue base accessor that aliases the concrete Definition
"ExternalObjects", // derived from the parsed XHTML content
"IsEditableSpecified", // records whether IS-EDITABLE is written, not a metamodel feature
"OwningDefinition", // back-reference to the owning AttributeDefinition
"Definition", // see note below - kept, handled explicitly (NOT excluded)
"SpecElAt", // back-reference to the owning SpecElementWithAttributes
Expand Down
Loading
Loading