Skip to content

Feat/methods to access xsd#1668

Open
MagnusNordboe wants to merge 3 commits intoAltinn:feat/methods-to-access-xsdfrom
MagnusNordboe:feat/methods-to-access-xsd
Open

Feat/methods to access xsd#1668
MagnusNordboe wants to merge 3 commits intoAltinn:feat/methods-to-access-xsdfrom
MagnusNordboe:feat/methods-to-access-xsd

Conversation

@MagnusNordboe
Copy link
Copy Markdown

Uses the new methods to access XSD to add opt-in validation based on XSD rules, if user has a schema with the same name as the data model.

Description

  • Added a new class XsdValidator:IValidator
  • Added default description of error in TranslationService.cs
  • Added a new setting in appsettings XsdValidation

Verification

  • [x ] Your code builds clean without any errors or warnings
  • [x ] Manual testing done (required)
  • Relevant automated test added (if you find this hard, leave it and we'll help out)
  • All tests run green

Documentation

  • User documentation is updated with a separate linked PR in altinn-studio-docs. (if applicable)
image

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Feb 23, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Member

@ivarne ivarne left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ser bra ut. Har noen små kommentarer. I tillegg må vi nok ha noen unit tester så vi ikke brekker funksjonaliteten når vi gjør endringer.

Comment thread src/Altinn.App.Core/Features/Validation/Default/XsdValidator.cs Outdated
continue;
}
var formData = await dataAccessor.GetFormData(dataElement);
ObjectUtils.RemoveAltinnRowId(formData);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bør vi fjerne altinnRowId her, eller bare kreve at den legges til som optional i xsd? Det er nok flere forskjeller, men dette er jo det eneste eksemplet (jeg har sett det har blitt klaget på) der xsd validering og data annotations gir ulikt resultat, men kanskje dere har andre grunner for å gjøre dette?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I testing, så arresterer validatoren deg om du har rowId og det ikke er i Xsd.
Det er ingen enkel måte å si blankt "Alle elementer kan ha AltinnRowId"; man må legge det til på hvert enkelt element, og det blir mye rot i Xsdene. For vårt prosjekt ville det vært ~1000 endringer.
Jeg har snakket med produkteieren vår angående altinnRowId og fått tydelig beskjed at vi ikke skal forholde oss til det i Xsd. Så her har egen erfaring blitt med inn som en beslutning i design av løsningen.

Comment thread src/Altinn.App.Core/Internal/Texts/TranslationService.cs Outdated

if (appSettings?.XsdValidation is true)
{
services.AddTransient<IValidator, XsdValidator>();
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bør det være standard å ha både DataAnnotationValidator og XsdValidator, eller bør aktivering av XsdValidation være et alternativ til dataAnnotations?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Jeg kan ikke si noe veldig konsekvent, men kan dele vår erfaring med disse typene validering.
Vi har opplevd at en god del innsendinger har blitt godkjent av DataAnnotationValidator, deretter kommet til backend som kjører xsd validering og klager på innsendingen. Så det virker som xsd validering er strengere enn DataAnnotationValidator. Vi kjører alltid xsd datamodeller gjennom altinn studio sitt generer datamodeller-verktøy.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Jeg har også grublet litt over om xsd validering burde være standard. Jeg føler det finnes et sterkt argument for, og et sterkt argument mot.

For: siden datamodeller kan genereres ut fra Xsd, kan man ofte anta at hvis man har en Xsd med samme navn som en modell, i models mappa, så vil man gjerne validere dataen utfra den xsden. og hvis man utvikler og finner at det skaper problemer, kan man deretter slå av. Ref det jeg nevnte over, med at xsd validering virker som det er strengere. Dette hadde vært "least trust" prinsipp, som noen setter pris på.

Imot: Jeg vet om hvertfall ett prosjekt, som startet i utgangspunktet med datamodell generert ut fra Xsd, og deretter gikk over til å bare redigere .cs filene direkte når de gjorde endringer i modellene. Jeg vet ikke hvor vanlig dette er, men slike utviklere vil helst ikke ha denne funksjonaliteten som standard.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

3 participants