【发布时间】:2017-04-26 17:54:25
【问题描述】:
我有这个:
<?xml version="1.0" encoding="UTF-8"?>
<xliffversion xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd">
<file original="Target1/Localizable.strings" source-language="de" datatype="plaintext" target-language="en">
<header>
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="8.2.1" build-num="8C1002"/>
</header>
<body>
<trans-unit id="Die Stadt muss mindestens 2 Buchstaben aufweisen. Die Zeichen ' und - sind erlaubt.">
<source>Die Stadt muss mindestens 2 Buchstaben aufweisen. Die Zeichen ' und - sind erlaubt.</source>
<note>Humanized-Error: Validation of city</note>
</trans-unit>
<trans-unit id="Die Standorte konnten nicht geladen werden.">
<source>Die Standorte konnten nicht geladen werden.</source>
<note>Humanized-Error: MerchantMapServiceClient</note>
</trans-unit>
<trans-unit id="Die Straße muss angegeben werden.">
<source>Die Straße muss angegeben werden.</source>
<note>Humanized-Error: Validation of street</note>
</trans-unit>
</body>
</file>
<file original="Target2/Localizable.strings" source-language="de" datatype="plaintext" target-language="en">
<header>
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="8.2.1" build-num="8C1002"/>
</header>
<body>
<trans-unit id="Die Stadt muss mindestens 2 Buchstaben aufweisen. Die Zeichen ' und - sind erlaubt.">
<source>Die Stadt muss mindestens 2 Buchstaben aufweisen. Die Zeichen ' und - sind erlaubt.</source>
<target>City must contain at least 2 letters. Characters like ' and - are allowed.</target>
<note>Humanized-Error: Validation of city</note>
</trans-unit>
<trans-unit id="Die Straße muss angegeben werden.">
<source>Die Straße muss angegeben werden.</source>
<target>Street is a mandatory field.</target>
<note>Humanized-Error: Validation of street</note>
</trans-unit>
</body>
</file>
<file original="Target3/Localizable.strings" source-language="de" datatype="plaintext" target-language="en">
<header>
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="8.2.1" build-num="8C1002"/>
</header>
<body>
<trans-unit id="%@ - %@">
<source>%1$@ - %2$@</source>
<note>Transaktionen, Wochendatumsbereich, 2 parameter</note>
</trans-unit>
<trans-unit id="Die Standorte konnten nicht geladen werden.">
<source>Die Standorte konnten nicht geladen werden.</source>
<target>Could not load locations.</target>
<note>Humanized-Error: MerchantMapServiceClient</note>
</trans-unit>
<trans-unit id="%ix einlösebereit!">
<source>%ix einlösebereit!</source>
<note>BonusProgramDetailView: points left info label shows how many times you can redeem your bonus</note>
</trans-unit>
<trans-unit id="Die Straße muss angegeben werden.">
<source>Die Straße muss angegeben werden.</source>
<target>Street is a mandatory field.</target>
<note>Humanized-Error: Validation of street</note>
</trans-unit>
</body>
</file>
</xliffversion>
我想要这个:
<?xml version="1.0" encoding="UTF-8"?>
<xliffversion xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd">
<file original="Target1/Localizable.strings" source-language="de" datatype="plaintext" target-language="en">
<header>
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="8.2.1" build-num="8C1002"/>
</header>
<body>
<trans-unit id="Die Stadt muss mindestens 2 Buchstaben aufweisen. Die Zeichen ' und - sind erlaubt.">
<source>Die Stadt muss mindestens 2 Buchstaben aufweisen. Die Zeichen ' und - sind erlaubt.</source>
<target>City must contain at least 2 letters. Characters like ' and - are allowed.</target>
<note>Humanized-Error: Validation of city</note>
</trans-unit>
<trans-unit id="Die Standorte konnten nicht geladen werden.">
<source>Die Standorte konnten nicht geladen werden.</source>
<target>Could not load locations.</target>
<note>Humanized-Error: MerchantMapServiceClient</note>
</trans-unit>
<trans-unit id="Die Straße muss angegeben werden.">
<source>Die Straße muss angegeben werden.</source>
<target>Street is a mandatory field.</target>
<note>Humanized-Error: Validation of street</note>
</trans-unit>
</body>
</file>
<file original="Target2/Localizable.strings" source-language="de" datatype="plaintext" target-language="en">
<header>
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="8.2.1" build-num="8C1002"/>
</header>
<body>
<trans-unit id="Die Stadt muss mindestens 2 Buchstaben aufweisen. Die Zeichen ' und - sind erlaubt.">
<source>Die Stadt muss mindestens 2 Buchstaben aufweisen. Die Zeichen ' und - sind erlaubt.</source>
<target>City must contain at least 2 letters. Characters like ' and - are allowed.</target>
<note>Humanized-Error: Validation of city</note>
</trans-unit>
<trans-unit id="Die Straße muss angegeben werden.">
<source>Die Straße muss angegeben werden.</source>
<target>Street is a mandatory field.</target>
<note>Humanized-Error: Validation of street</note>
</trans-unit>
</body>
</file>
<file original="Target3/Localizable.strings" source-language="de" datatype="plaintext" target-language="en">
<header>
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="8.2.1" build-num="8C1002"/>
</header>
<body>
<trans-unit id="%@ - %@">
<source>%1$@ - %2$@</source>
<note>Transaktionen, Wochendatumsbereich, 2 parameter</note>
</trans-unit>
<trans-unit id="Die Standorte konnten nicht geladen werden.">
<source>Die Standorte konnten nicht geladen werden.</source>
<target>Could not load locations.</target>
<note>Humanized-Error: MerchantMapServiceClient</note>
</trans-unit>
<trans-unit id="%ix einlösebereit!">
<source>%ix einlösebereit!</source>
<note>BonusProgramDetailView: points left info label shows how many times you can redeem your bonus</note>
</trans-unit>
</body>
</file>
</xliffversion>
xsl 转换需要做到以下几点:
遍历所有trans-unit 节点并检查它们是否包含<target> 节点。如果是这样,那很好。如果没有,那么它应该寻找另一个trans-unit 节点(具有相同的ID,但在不同的<file> 节点中)并将<target> 节点(如果有的话)复制到它丢失的节点中。我如何做到这一点?
【问题讨论】:
-
可以有多个
trans-unit元素具有相同的id属性吗?如果是这样,应该使用哪一个来复制target? -
是的。它应该使用实际上具有
<target>元素的那个。 (理想情况下应该取一个,其中该元素的内容不等于id本身 - 目前不是这种情况,但将来可能会发生)
标签: xml xslt xslt-1.0 xslt-2.0