Generowanie formularza na podstawie XML-a - etykiety

0

Witajcie,
Mam taki dość ciekawy przynajmniej dla mnie przypadek, który nie bardzo wiem jak ugryźć :|. Jest sobie XML. Zawiera kilkanaście tysięcy linii. Teraz na podstawie tego XML'a będę generował prosty formularz dla użytkownika. Rzecz jasna nie będzie to wyglądało tak że wygeneruję jeden olbrzymi formularz ze wszystkimi polami. Jest on podzielony na sekcje. Jest część dotycząca produktów. Jest część dotycząca klienta itd. Każda z tych części będzie w osobnych zakładkach. Także wizualnie będzie to podzielone i to nie jest sednem problemu na jaki trafiłem. Problem zaczyna się podczas generowania etykiet. Normalnie wziął bym nazwę pola z XML'a, wartość i już. No ale tak to nie zadziała ponieważ nazwy pól w XML'u są po angielsku a warunek podstawowy jest taki, że nazwy pól na formularzu mają być w języku polski. No i kurcze nie wiem jak to ugryźć. Nigdy czegoś podobnego nie robiłem. Może są na to jakieś mechanizmy. Nie wiem, może mógłbym trzymać gdzieś w bazie drugiego XML'a który zawierał by nazwę pola po angielsku odpowiadającą jeden do jednego nazwie z tego drugiego XML'a i jednocześnie wartość przetłumaczoną? Albo może jakoś to maregować po stronie silnika bazy danych bo to właśnie z bazy ten XML do zasilenia formularza będzie pobierany. Podpowiecie coś?

0

A jakbyś sobie ten, XML wcześniej przetłumaczył?

0

Wcześniejsze tłumaczenie odpada bo to nie jest nowy projekt tylko ma działać również wstecznie a mam kilkaset tysięcy takich XML'i nie przetłumaczonych także z tego nic nie będzie. Gdyby to było nowy projekt to mógłbym sobie zażyczyć od systemu źródłowego konkretnego formatu ale niestety.

1

Taka propozycja:
Masz dokument english.xml:

<?xml version="1.0"?>
<section>
    <label name="hello"/>
    <label name="bye"/>
</section>

Tworzysz sobie dokument translator.xsl:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="document('english.xml')/section/label">
<h1>
<xsl:if test="@name='hello'">dzień dobry</xsl:if>
<xsl:if test="@name='bye'">do widzenia</xsl:if>
</h1>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

... i wrapper polish.xml:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="translator.xsl"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
</body>
</html>

Po otwarciu polish.xml w przeglədarce powinieneś zobaczyć:
Screenshot_xml2xml.png

0

Czyli jednym słowem transformata XSLT.

2

No tylko pytanko po co Ci ten XML i jakie on ma znaczenie tutaj?

  • Chcesz po prostu jednorazowo zrobić formularz z XML'a?
  • Czy chodzi tutaj o to że będziesz dostawał różne XML'e w runtime, i na podstawie tych różnych XML'i chciałbyś generować różne formularze?
  • Czy może te XML są użyte jako taka forma "kustomizacji formularzy", coś jak CMS którego bazą jest ten XML?
  • Czy może ten XML to jakiś schemat modelu, a ten formularz to ma być taki edytor recordu?

Noi też pytanie skąd jest ten XML, czy on jest od Ciebie i trzymasz go u siebie albo commitujesz do repo jak migrację? Czy konsumujesz go z jakiegoś innego serwisu/mikroserwisu, jak integracja?

Innymi słowy, jaką rolę ten XML gra w Twojej aplikacji? :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1