Beschrijving van de XML-naamruimte. Basis-URI's van XML-documentfragmenten. XML-naamruimtevoorvoegsels. Voorbeelden van het gebruik van naamruimten in XML en XSLT

Dit is weer een les XML-basisprincipes en daarin zullen we een dergelijk onderwerp beschouwen als naamruimten. Om het simpel te zeggen in eenvoudige woorden, dan worden in XML grofweg naamruimten gebruikt om elk individu uniek te maken. Zoals u zich uit eerdere artikelen herinnert, lijkt elke ontwikkelaar die met XML werkt zijn eigen taal uit te vinden. In dit opzicht worden zogenaamde naamruimten gebruikt, zodat alle elementen van het document uniek zijn en hun eigen betekenis hebben, die in dit artikel zullen worden besproken.

Om de essentie van het bovenstaande beter te begrijpen, laten we een klein voorbeeld bekijken. Laten we zeggen dat we een document hebben dat er meerdere gebruikt logische circuits, die dezelfde elementen bevatten die in verschillende betekenissen worden gebruikt. Als er maar één plan was, dan bijzondere problemen zou niet voorkomen, maar aangezien er meerdere zijn, wordt het onmogelijk om te bepalen welk element tot welk schema behoort of welke schema's in het algemeen in het document worden gebruikt.

In dit opzicht zijn ze ontwikkeld naamruimtenXML. Om documentschema's van elkaar te onderscheiden, wordt aan elk een speciale unieke resource-ID of URI toegewezen. Als gevolg hiervan worden schema's alleen als identiek beschouwd als de unieke identificatiegegevens overeenkomen. In dit opzicht wordt het adres van uw bron meestal als identificatie gebruikt.

Het is vermeldenswaard dat het niet nodig is dat er iets op dit adres is. De handler zal de link niet volgen en controleren op informatie. Het wordt puur gebruikt als een unieke identificatie, en aangezien het ook de URL van de bron is, is het onwaarschijnlijk dat iemand het als identificatie voor zijn/haar schema zal gebruiken.

Dus we hebben de theorie ontdekt. Laten we nu verder kijken naar naamruimtevoorvoegsels en voorbeelden van hoe u deze correct kunt gebruiken.

XML-naamruimtevoorvoegsels. Voorbeelden van het gebruik van naamruimten in XML en XSLT

Zoals hierboven vermeld, worden naamruimten gedefinieerd met behulp van unieke URI's. Om het werken ermee te vereenvoudigen, zijn er speciale naamruimteprefixen ontwikkeld waarmee eenvoudig kan worden bepaald tot welk schema een bepaald documentelement behoort. Laten we, om dit aan te tonen, naar een klein voorbeeld kijken.

<префикс:элемент xmlns:префикс="URI"> ...

Zoals u in het voorbeeld kunt zien, worden naamruimtevoorvoegsels opgegeven als attributen met namen die beginnen met de xmlns-reeks. Als we het over XSLT hebben, wordt daar het xsl-voorvoegsel het vaakst gebruikt. In de praktijk ziet het er allemaal zo uit.

...

Elke andere naam, bijvoorbeeld ddd, kan worden gebruikt als naamruimtevoorvoegsel. In dit geval ziet de code er als volgt uit.

...

De bovenstaande twee voorbeelden zijn absoluut identiek aan elkaar en zullen op geen enkele manier verschillen. Het is de moeite waard om meteen op te merken dat het aangemaakte naamruimtevoorvoegsel alleen kan worden gebruikt in zijn eigen naam en in geneste elementen, maar niet buiten het element waarin het is gemaakt. Beschouw voor de duidelijkheid het volgende voorbeeld.

welke inhoud dan ook ...

Een ander punt dat het vermelden waard is, is dat de voorvoegsels zelf geen element voor een bepaald schema definiëren. Dit wordt gedaan door unieke identificatiegegevens die aan deze voorvoegsels worden toegewezen. Twee elementen met verschillende voorvoegsels en met dezelfde identificatiegegevens worden dus geacht tot hetzelfde schema te behoren. Om dit aan te tonen, bekijken we het volgende voorbeeld.

Elke tekst ...

Ook al hebben de stylesheet- en tekstelementen dat wel verschillende voorvoegsels, ze behoren tot hetzelfde schema, omdat aan hun voorvoegsels dezelfde identificatiegegevens zijn toegewezen. Er kan dus een willekeurig aantal naamruimtevoorvoegsels in een document worden gebruikt. Vaak worden ze allemaal gedefinieerd in het hoofdelement, en vervolgens gewoon op de juiste plek in het document gebruikt. En nogmaals, nog een voorbeeld ter demonstratie.

...

Er is een andere manier waarmee u kunt voorkomen dat u voorvoegsels aan elementen toevoegt. Om dit te doen, stelt u eenvoudigweg de standaardnaamruimte in. In dit geval behoren alle geneste elementen tot de naamruimte ouderelement. Tegelijkertijd is er de mogelijkheid om andere naamruimten te gebruiken kind elementen. Om dit te doen, registreert u eenvoudigweg de vereiste naamruimte handmatig met behulp van het xmlns-attribuut.

Elke inhoud Elke inhoud Elke inhoud Elke inhoud ...

Het is de moeite waard hier op te merken dat de elementen één en twee tot de naamruimte van het derde element zullen behoren, omdat dit hun ouder is. Zoals u kunt zien, is de zogenaamde erfenis hier te traceren. Als voor een element geen naamruimte is opgegeven, wordt automatisch de naamruimte van het dichtstbijzijnde bovenliggende element toegewezen.

Meestal is de bovenstaande methode niet erg populair en worden naamruimtevoorvoegsels het vaakst gebruikt. Maar in sommige gevallen kunt u ze weglaten en de methode gebruiken met het instellen van de standaardnaamruimte. Laten we, om eventuele vragen te vermijden, een soortgelijke manier overwegen om het laatste voorbeeld te presenteren.

Elke inhoud Elke inhoud Elke inhoud Elke inhoud ...

Dit is het einde van onze beschouwing van naamruimten en in het volgende artikel zullen we het hebben over de belangrijkste punten van beschrijving met behulp van DTD. Als je de release van nieuwe artikelen niet wilt missen, raad ik je aan je te abonneren op de nieuwsbrief via onderstaand inschrijfformulier.

Dat is alles. Veel succes en succes bij het leren van XML.

Dit is weer een les over de basisprincipes van XML en daarin zullen we naar een onderwerp kijken als naamruimten. Simpel gezegd: in XML worden naamruimten grofweg gebruikt om elk individu . Zoals u zich uit eerdere artikelen herinnert, lijkt elke ontwikkelaar die met XML werkt zijn eigen taal uit te vinden. In dit opzicht worden zogenaamde naamruimten gebruikt, zodat alle elementen van het document uniek zijn en hun eigen betekenis hebben, die in dit artikel zullen worden besproken.

Om de essentie van het bovenstaande beter te begrijpen, laten we een klein voorbeeld bekijken. Laten we zeggen dat we een document hebben dat verschillende logische circuits gebruikt waarin dezelfde elementen in verschillende betekenissen worden gebruikt. Als er maar één schema zou zijn, zouden er geen speciale problemen zijn, maar omdat er meerdere zijn, wordt het onmogelijk om te bepalen welk element tot welk schema behoort of welke schema's in het algemeen in het document worden gebruikt.

In dit opzicht zijn ze ontwikkeld naamruimtenXML. Om documentschema's van elkaar te onderscheiden, wordt aan elk een speciale unieke resource-ID of URI toegewezen. Als gevolg hiervan worden schema's alleen als identiek beschouwd als de unieke identificatiegegevens overeenkomen. In dit opzicht wordt het adres van uw bron meestal als identificatie gebruikt.

Het is vermeldenswaard dat het niet nodig is dat er iets op dit adres is. De handler zal de link niet volgen en controleren op informatie. Het wordt puur gebruikt als een unieke identificatie, en aangezien het ook de URL van de bron is, is het onwaarschijnlijk dat iemand het als identificatie voor zijn/haar schema zal gebruiken.

Dus we hebben de theorie ontdekt. Laten we nu verder kijken naar naamruimtevoorvoegsels en voorbeelden van hoe u deze correct kunt gebruiken.

XML-naamruimtevoorvoegsels. Voorbeelden van het gebruik van naamruimten in XML en XSLT

Zoals hierboven vermeld, worden naamruimten gedefinieerd met behulp van unieke URI's. Om het werken ermee te vereenvoudigen, zijn er speciale naamruimteprefixen ontwikkeld waarmee eenvoudig kan worden bepaald tot welk schema een bepaald documentelement behoort. Laten we, om dit aan te tonen, naar een klein voorbeeld kijken.

<префикс:элемент xmlns:префикс="URI"> ...

Zoals u in het voorbeeld kunt zien, worden naamruimtevoorvoegsels opgegeven als attributen met namen die beginnen met de xmlns-reeks. Als we het over XSLT hebben, wordt daar het xsl-voorvoegsel het vaakst gebruikt. In de praktijk ziet het er allemaal zo uit.

...

Elke andere naam, bijvoorbeeld ddd, kan worden gebruikt als naamruimtevoorvoegsel. In dit geval ziet de code er als volgt uit.

...

De bovenstaande twee voorbeelden zijn absoluut identiek aan elkaar en zullen op geen enkele manier verschillen. Het is de moeite waard om meteen op te merken dat het aangemaakte naamruimtevoorvoegsel alleen kan worden gebruikt in zijn eigen naam en in geneste elementen, maar niet buiten het element waarin het is gemaakt. Beschouw voor de duidelijkheid het volgende voorbeeld.

welke inhoud dan ook ...

Een ander punt dat het vermelden waard is, is dat de voorvoegsels zelf geen element voor een bepaald schema definiëren. Dit wordt gedaan door unieke identificatiegegevens die aan deze voorvoegsels worden toegewezen. Twee elementen met verschillende voorvoegsels en met dezelfde identificatiegegevens worden dus geacht tot hetzelfde schema te behoren. Om dit aan te tonen, bekijken we het volgende voorbeeld.

Elke tekst ...

Ondanks het feit dat de stylesheet- en tekstelementen verschillende voorvoegsels hebben, behoren ze tot hetzelfde schema, omdat aan hun voorvoegsels dezelfde identificatiecodes zijn toegewezen. Er kan dus een willekeurig aantal naamruimtevoorvoegsels in een document worden gebruikt. Vaak worden ze allemaal gedefinieerd in het hoofdelement, en vervolgens gewoon op de juiste plek in het document gebruikt. En nogmaals, nog een voorbeeld ter demonstratie.

...

Er is een andere manier waarmee u kunt voorkomen dat u voorvoegsels aan elementen toevoegt. Om dit te doen, stelt u eenvoudigweg de standaardnaamruimte in. In dit geval behoren alle geneste elementen tot de naamruimte van het bovenliggende element. Hierdoor verliest u niet de mogelijkheid om andere naamruimten voor onderliggende elementen te gebruiken. Om dit te doen, registreert u eenvoudigweg de vereiste naamruimte handmatig met behulp van het xmlns-attribuut.

Elke inhoud Elke inhoud Elke inhoud Elke inhoud ...

Het is de moeite waard hier op te merken dat de elementen één en twee tot de naamruimte van het derde element zullen behoren, omdat dit hun ouder is. Zoals u kunt zien, is de zogenaamde erfenis hier te traceren. Als voor een element geen naamruimte is opgegeven, wordt automatisch de naamruimte van het dichtstbijzijnde bovenliggende element toegewezen.

Meestal is de bovenstaande methode niet erg populair en worden naamruimtevoorvoegsels het vaakst gebruikt. Maar in sommige gevallen kunt u ze weglaten en de methode gebruiken met het instellen van de standaardnaamruimte. Laten we, om eventuele vragen te vermijden, een soortgelijke manier overwegen om het laatste voorbeeld te presenteren.

Elke inhoud Elke inhoud Elke inhoud Elke inhoud ...

Dit is het einde van onze beschouwing van naamruimten en in het volgende artikel zullen we het hebben over de belangrijkste punten van beschrijving met behulp van DTD. Als je de release van nieuwe artikelen niet wilt missen, raad ik je aan je te abonneren op de nieuwsbrief via onderstaand inschrijfformulier.

Dat is alles. Veel succes en succes bij het leren van XML.

Vladimir Engels, Orakel CIS

Invoering

Bij de implementatie van typische SOA-projecten worden in de regel meerdere XML-schema's gemaakt. In deze gevallen moet de ontwerper van het XML-schema de volgende vraag overwegen:

  • moeten aan alle XML-schema's in een project verschillende targetNamespace-waarden worden toegewezen
  • of moet u voor iedereen dezelfde targetNamespace gebruiken
  • en is het mogelijk dat aan sommige XML-schema's geen targetNamespace wordt toegewezen?

Welke aanpak zou beter zijn? Welke richtlijnen moet u volgen als u begint te werken aan SOA-projecten die meerdere XML-schema's maken?

Omwille van de nauwkeurigheid moet worden opgemerkt dat er drie ontwerpbenaderingen zijn bij het werken met meerdere XML-schema's:

  1. heterogene naamruimte- aan elk XML-schema wordt een eigen targetNamespace toegewezen;
  2. homogene naamruimte- aan alle XML-schema's wordt één enkele targetNamespace toegewezen;
  3. kameleon naamruimte- aan het hoofd-XML-schema wordt een targetNamespace toegewezen, en aan aanvullende XML-schema's wordt geen targetNamespace toegewezen (XML-schema's zonder targetNamespace gebruiken de targetNamespace van het hoofd-XML-schema wanneer ze als een kameleon worden gecombineerd).

Om de voor- en nadelen van de drie aangegeven ontwerpbenaderingen te beschrijven en te evalueren, geven we voor elk ervan voorbeelden.

Voorbeeld: XML-bedrijfsgegevensmodel

Laten we ons een project voorstellen waarbij een bedrijfsgegevensmodel moet worden gemaakt met behulp van XML-schema's. Dit model wordt gemaakt in de vorm van de volgende drie XML-schema's:

  • Bedrijf.xsd
  • Persoon.xsd
  • Product.xsd

Dit kan worden omschreven als “bedrijfsinformatie omvat persoons- en productgegevens.” Hier zijn drie diagrammen voor elke ontwerpbenadering.

Heterogene naamruimte

Bij deze ontwerpaanpak wordt voor elk XML-schema een andere targetNamespace gebruikt. Hieronder staan ​​drie circuits ontworpen met behulp van deze ontwerpbenadering.

Product.xsd

targetNamespace="http://www.product.org" xmlns="http://www.product.org" elementFormDefault="unqualified"> xmlns:per="http://www.person.org" xmlns:pro="http://www.product.org">

Persoon.xsd

targetNamespace="http://www.person.org" xmlns="http://www.person.org" elementFormDefault="unqualified">

Bedrijf.xsd

naamruimte = "http://www.person.org" schemaLocation = "Persoon.xsd"/> naamruimte = "http://www.product.org" schemaLocation = "Product.xsd"/> type="per:PersoonType" maxOccurs=”onbegrensd”/> type="pro:ProductType" maxOccurs=”onbegrensd”/>

Houd er rekening mee dat schema's drie verschillende naamruimten gebruiken:

Http://www.product.org http://www.person.org http://www.bedrijf.org

Homogene naamruimte

Deze ontwerpaanpak gebruikt één enkele targetNamespace voor alle XML-schema's. Hieronder staan ​​drie circuits ontworpen met behulp van deze ontwerpbenadering.

Product.xsd

targetNamespace="http://www.bedrijf.org" xmlns="http://www.product.org" elementFormDefault="gekwalificeerd">

Persoon.xsd

targetNamespace="http://www.bedrijf.org" xmlns="http://www.person.org" elementFormDefault="gekwalificeerd">

Bedrijf.xsd

targetNamespace="http://www.bedrijf.org" xmlns = "http://www.bedrijf.org" elementFormDefault = "gekwalificeerd"> schemaLocation="Persoon.xsd"/> schemaLocation="Product.xsd"/> type="Persoontype" maxOccurs=”onbegrensd”/> type="Producttype" maxOccurs=”onbegrensd”/>

Merk op dat alle drie de schema's dezelfde naamruimte gebruiken:

http://www.bedrijf.org

Houd er ook rekening mee dat het combineren van XML-schema's met behulp van enkele ruimte namen, wordt het mechanisme toegepast .

Kameleon-naamruimte

Deze ontwerpbenadering gebruikt targetNamespace alleen voor het hoofd-XML-schema en wijst geen targetNamespace toe aan aanvullende XML-schema's. Hieronder staan ​​drie circuits ontworpen met behulp van deze ontwerpbenadering. IN in dit voorbeeld Het Company.xsd XML-schema is het belangrijkste, de Product.xsd en Person.xsd XML-schema's zijn de aanvullende schema's.

Product.xsd (geen doelNaamruimte)

Persoon.xsd (geen doelNaamruimte)

Bedrijf.xsd

targetNamespace="http://www.bedrijf.org" xmlns = "http://www.bedrijf.org" elementFormDefault = "gekwalificeerd"> schemaLocation="Persoon.xsd"/> schemaLocation="Product.xsd"/> type="Persoontype" maxOccurs=”onbegrensd”/> type="Producttype" maxOccurs=”onbegrensd”/> >

Houd rekening met twee aspecten bij het gebruik van deze ontwerpaanpak:

  • er wordt ook een mechanisme gebruikt om XML-schema's te combineren met behulp van de kameleonnaamruimte , en het hoofd-XML-schema heeft toegang tot elementen van de aanvullende XML-schema's;
  • Sub-XML-schema's zonder targetNamespace hebben in deze ontwerpbenadering het volgende kenmerk: XML-schemacomponenten zonder targetNamespace gebruiken een naamruimtecast (dit betekent dat de componenten de targetNamespace van het hoofd-XML-schema accepteren).

"Kameleon-effect..."- deze term werd geïntroduceerd door Henry Thompson.

Impact van ontwerpbenaderingen op XML-documenten

Het bovenstaande demonstreerde hoe XML-schema's konden worden ontworpen met behulp van drie ontwerpbenaderingen. Laten we nu eens kijken naar XML-documenten. Verschilt de creatie van XML-documenten afhankelijk van het gebruik van een bepaalde ontwerpbenadering? Alle bovenstaande XML-schema's zijn ontworpen om te vereisen dat naamruimten expliciet worden gespecificeerd in de XML-documenten (zoals aangegeven door: elementFormDefault="qualified"). Als ze in plaats daarvan elementFormDefault="unqualified" hadden gebruikt, zou het XML-document dat voor alle drie de gevallen hebben gedaan het volgende formulier:

John Doe 123-45-6789 Widget

Hoe zullen de XML-documenten er dus uitzien voor onze drie ontwerpbenaderingen?

Company.xml (voor versie met heterogene naamruimte in targetNamespace)

John Doe 123-45-6789 Widget

Houd rekening met het volgende:

  • het is noodzakelijk om voor elke naamruimte een naamruimtedeclaratie te hebben;
  • alle elementen moeten uniek gekwalificeerd zijn (expliciet of via een standaardnaamruimte).

Company.xml (voor versie met homogene naamruimte in targetNamespace)

John Doe 123-45-6789 Widget

Omdat alle schema's tot dezelfde naamruimte behoren, kunnen XML-documenten in deze situatie profiteren van het gebruik van de standaardnaamruimte.

Company.xml (voor versie met kameleonnaamruimte in targetNamespace)

John Doe 123-45-6789 Widget

Beide XML-schema's zonder een targetNamespace te definiëren, namen de targetNamespace van het Company.xsd XML-schema over (vergelijkbaar met het kameleoneffect). Op deze manier behoren alle componenten tot dezelfde targetNamespace en kunnen XML-documenten voor deze situatie ook profiteren van het gebruik van de standaardnaamruimte.

- alleen toepasbaar in homogene naamruimten en kameleonnaamruimten

Element gebruikt in XML-schema's om toegang te krijgen tot componenten in andere XML-schema's, terwijl een aantal (nul of meer) wijzigingen kunnen worden aangebracht in de geïmporteerde componentdefinities. Het onderdeel dus vervult een dubbele functie:

  • het doet het impliciete , waarmee u toegang heeft tot alle componenten in de hulpcircuits;
  • het maakt het mogelijk om een ​​bepaald aantal (nul of meer) wijzigingen aan te brengen in de definities van geïmporteerde componenten, dat wil zeggen de definities van componenten uit te breiden of, omgekeerd, aanvullende beperkingen over componentdefinities.

Voorbeeld. Laten we nogmaals naar het bovenstaande XML-schema Company.xsd kijken. Laten we zeggen dat het het ProductType-element uit Product.xsd gebruikt. Bovendien moet u tijdens gebruik het ProductType-element uitbreiden met een ID-element. Laten we een voorbeeld geven van hoe dit kan worden gedaan met behulp van het element :

Nu het onderdeel Het XML-document moet beide elementen bevatten En , dat wil zeggen:

John Doe 123-45-6789 Widget 1001-01-00

Element heeft een zeer grote ontwerpkracht. Het kan echter alleen worden gebruikt in XML-schema's met één enkele naamruimte of in XML-schema's zonder een naamruimte op te geven. Het onderdeel dus is mogelijk alleen van toepassing op ontwerpbenaderingen van homogene naamruimten en kameleons.

Standaardbenadering van naamruimte en kameleonontwerp

Als het XML-schema het gebruik van een element vereist Bij een kameleonontwerpbenadering (waarbij schema's worden gebruikt zonder een targetNamespace te definiëren), moet het hoofdschema zowel de naamruimte uit targetNamespace als de standaardnaamruimte declareren.

Hoe naambotsingen te voorkomen bij gebruik van de kameleonbenadering

Naam botsing

Wanneer een host-XML-schema kameleoncomponenten gebruikt, worden die componenten onderdeel van de naamruimte (gespecificeerd door targetNamespace) van het host-XML-schema, alsof de ontwerper van het XML-schema inline element- en typedeclaraties had gebruikt. Als het hoofdcircuit ( ) meerdere XML-schema's zonder een naamruimte op te geven, bestaat de kans dat er een naambotsing optreedt. Daarom zal het hoofd-XML-schema sommige componenten van de ondersteunende XML-schema's (die geen naamruimte specificeren) niet kunnen gebruiken, omdat deze naambotsingen hebben met elementen uit andere ondersteunende XML-schema's. Bekijk het volgende voorbeeld om het probleem van naambotsing aan te tonen.

Laten we zeggen dat er twee XML-schema's zijn zonder targetNamespace op te geven:

1.xsd A B 2.xsd A C

XML Schema 1.xsd definieert elementen A en B zonder een naamruimte op te geven.
XML Schema 2.xsd definieert elementen A en C zonder een naamruimte op te geven.
Als het 3.xsd XML-schema nu ( ) twee gespecificeerde XML-schema's zonder een naamruimte op te geven, is er een naambotsing voor element A omdat het tweemaal wordt gedeclareerd:

3.xsd targetNamespace="http://www.example.org"

Merk op dat het geen fout is als er een definitie bestaat van twee elementen met dezelfde naam als ze van hetzelfde type zijn. Als ze tot verschillende typen behoren, is er sprake van een fout en is er sprake van een naambotsing.

Het standaardmechanisme voor het elimineren van naambotsingen is precies het gebruik van naamruimten. Als in het bovenstaande voorbeeld de componenten 1.xsd en 2.xsd XML Schema zich in verschillende naamruimten bevonden en deze werden geïmporteerd in het 3.xsd XML Schema, zou er geen naamconflict zijn. [Merk op dat twee componenten dezelfde naam kunnen hebben als de componenten tot verschillende naamruimten behoren.]

Hoe los je het probleem van naambotsing op bij het gebruik van kameleonnaamruimten?

Het probleem van naambotsing oplossen met behulp van proxy-XML-schema's

Er is een zeer eenvoudige oplossing voor dit naambotsingsprobleem: voor elk XML-schema dat is opgenomen zonder een naamruimte op te geven, maakt u een aanvullend proxy-XML-schema dat de naamruimte declareert en dat zelf al bevat ( ) aanvullende XML-schema's zonder naamruimten op te geven. Vervolgens importeert het hoofdschema eenvoudigweg ( ) alle proxy-XML-schema's.

Hier is een voorbeeld dat deze ontwerpaanpak demonstreert:

1-proxy.xsd targetNamespace = "http://www.1-proxy.org" 2-proxy.xsd targetNamespace = "http://www.2-proxy.org" main.xsd targetNamespace="http://www.main.org"

Door deze ontwerpaanpak te gebruiken, konden we naambotsingen voorkomen. Bovendien heeft deze ontwerpaanpak nog een bijkomend voordeel: binnen proxying XML-schema's kun je het element ook gebruiken om wijzigingen aan te brengen in kameleoncomponenten.

Deze projectaanpak regelt dus een proces in drie stappen:

  • kameleondiagrammen maken;
  • maak proxy-XML-schema's voor elk kameleonschema;
  • importeren ( ) XML-schema's proxyen naar het hoofdschema.

Door dit driestapsproces te gebruiken, kunt u flexibelere ontwerpbeslissingen nemen over de domeinen (naamruimten) van de componenten die worden hergebruikt. Bovendien wordt het mogelijk om wijzigingen aan te brengen in de kameleoncomponenten. Hoewel deze aanpak gebruik maakt van een extra processtap (het maken van proxy-XML-schema's), is deze nog steeds zeer flexibel.

Laten we dit driestapsproces vergelijken met het eerder beschreven tweestapsproces, waarbij aan componenten naamruimten worden toegewezen vanaf het allereerste begin van het bestaan ​​van de component:

1-fixed.xsd targetNamespace="http://www.1-fixed.org" A B 2-fixed.xsd targetNamespace="http://www.2-fixed.org" A C main.xsd targetNamespace="http: //www.main.org"

Een tweestapsproces levert hetzelfde resultaat op als een driestapsproces. In dit voorbeeld zijn de componenten niet langer kameleons en zijn de elementen A, B en C vanaf het begin van de levenscyclus van de component nauw verbonden met hun respectievelijke naamruimten. Het nadeel van deze aanpak is dat als je in main.xsd wijzigingen moet aanbrengen in de componentdefinities met behulp van , dan is dit onmogelijk. Bovendien wordt de ontwerper van het hoofd-XML-schema gedwongen naamruimten te gebruiken die door iemand anders zijn gedefinieerd. Deze componenten zijn statisch, onveranderlijk en hebben een vaste naamruimte.

Tools die het gebruik van kameleoncomponenten vergemakkelijken

Beschrijving van het probleem bij het identificeren van kameleoncomponenten

We hebben al verschillende keren gezien dat kameleoncomponenten verward kunnen raken in circuits die ze gebruiken. Dit gebeurt wanneer ze een naamruimte accepteren die ( ) hun XML-schema's. Hoe kunt u componenten identificeren die meerdere representaties hebben die tot verschillende naamruimten behoren?

Stel dat de volgende XML-schema's bestaan ​​zonder naamruimtedefinities:

1.xsd EEN B

Vervolgens definiëren we het belangrijkste XML-schema main.xsd, dat omvat ( ) aanvullend XML-schema "kameleon" 1.xsd, en bevat zelf ook de definitie van een element met de naam A (aangezien het zich in een andere symbolische omgeving bevindt - binnen het element , dit zal geen naambotsing veroorzaken).

Main.xsd targetNamespace="http://www.example.org" ...

Stel dat we tijdens het transformatieproces de kameleoncomponent A duidelijk moeten identificeren, ongeacht tot welke naamruimte deze in de toekomst behoort. Hoe onderscheiden we een kameleoncomponent A van een component A die lokaal is gedefinieerd in het XML-schema?

Identificatie van kameleoncomponenten

Een eenvoudige oplossing is om er een globaal unieke identificatie (GUID) aan toe te wijzen bij het maken van een kameleoncomponent. Met de XML-schemaspecificatie kunt u een id-attribuut toevoegen voor een element, attribuut en eenvoudige en complexe typecomponenten. Houd er rekening mee dat het id-attribuut puur lokaal is voor het XML-schema en nooit in het XML-document terechtkomt. Het is dit attribuut dat kan worden gebruikt om een ​​kameleoncomponent nauwkeurig te identificeren, ongeacht de huidige naamruimte.

Vraag: Wat gebeurt er als de XML-processor vanwege netwerkproblemen geen toegang kan krijgen tot het XML-schema met de vereiste definities?

Net als bij DTD-definities zal er een uitzondering optreden in de XML-processor. De oplossing voor dit probleem is om altijd kopieën op te slaan van de XML-schema's die u lokaal gebruikt.

Oefen met het gebruik van XML-naamruimten in projecten

De hierboven beschreven ontwerpbenaderingen voor het gebruik van XML-naamruimten in projecten. Voor elk van de drie ontwerpbenaderingen zijn zowel XML-schema's als XML-documenten in aanmerking genomen.

Nu blijft het de hoofdvraag beantwoorden: welke aanpak is beter, en in welk geval?

Als uw project een XML-schema gebruikt dat door iemand anders is gemaakt en beheerd, moet u importeren ( ) van een bepaald XML-schema, dat wil zeggen: gebruik een ontwerpbenadering met een heterogene naamruimte. Het kopiëren van dergelijke componenten naar de projectnaamruimte is om twee redenen geen goed idee:

  • zeer snel raakt de lokale kopie van het project niet meer synchroon met andere XML-schema's en...
  • het project verliest de mogelijkheid om te communiceren met bestaande applicaties die andere XML-schema's verwerken.

Een interessantere situatie (de situatie die als voorbeeld werd besproken) is hoe om te gaan met de naamruimte van XML-schema's die in het kader van een project zijn gemaakt en volledig onder controle staan ​​van één ontwerper (of groep). Hieronder vindt u enkele aanbevelingen:

Gebruik een kameleonnaamruimte:

  • met XML-schema's die componenten bevatten die op zichzelf geen geërfde semantiek hebben;
  • met XML-schema's die componenten bevatten die alleen semantiek hebben in de context van het hoofd-XML-schema;
  • wanneer er geen wens is om op rigide wijze een naamruimte toe te wijzen aan het XML-schema om de ontworpen componenten toe te kunnen wijzen aan de specifieke naamruimte van de applicatie waarin ze zullen worden gebruikt.

    Voorbeeld. Repositorycomponenten zoals een XML-schema dat de typen van een array, vector, gekoppelde lijst, enz. definieert, moeten worden gedefinieerd zonder een targetNamespace op te geven (dat wil zeggen, als een kameleon XML-schema).

    Als het XML-schema alleen typedefinities bevat (geen elementdeclaraties), dan is het ook een goede kandidaat voor een kameleonnaamruimte.

    Gebruik een homogene naamruimte:

    • of alle XML-schema's conceptueel aan elkaar gerelateerd zijn;
    • als het niet nodig is om in een XML-document visueel te identificeren of de elementen en attributen bij een bepaald XML-schema horen. Met deze aanpak behoren alle componenten tot dezelfde naamruimte en gaat dus de mogelijkheid verloren om in een XML-document te identificeren dat "element A is gedefinieerd in schema X". Vaak is het normaal dat de ontwerper elementen of attributen niet apart wil categoriseren. In dit geval is een homogene naamruimte zeer geschikt.

    Gebruik een heterogene naamruimte:

  • wanneer er meerdere elementen zijn met dezelfde naam (om botsingen tussen namen te voorkomen);
  • als het nodig is om in een XML-document visueel te identificeren welke elementen en attributen bij een bepaald XML-schema horen. Met deze aanpak behoren componenten tot verschillende naamruimten, en dus is het mogelijk om in een XML-document te identificeren dat "element A is gedefinieerd in schema X".

    Ten slotte kan, zoals hierboven aangetoond, in XML-schema's elke component uniek worden geïdentificeerd met behulp van een id-attribuut (dit is niet hetzelfde als het declareren van een id-attribuut voor een element; het is een intern mechanisme van XML-schema's om elke component van het XML-schema te identificeren ). Als u het id-attribuut gebruikt om elke XML-schemacomponent te identificeren, heeft u nog meer controle over de component dan wanneer u naamruimten gebruikt. De combinatie van deze twee tools (naamruimten en id-attributen van XML-schemacomponenten) is een krachtige tandem waarmee u op betrouwbare wijze XML-schemacomponenten kunt identificeren, zowel visueel als programmatisch.

  • Bij het maken van een XML-document kunnen we tegenkomen dat elementen met verschillende betekenissen dezelfde naam hebben. Een voorbeeld kunt u zien in het artikel “Top 10 RSS-fouten” in punt 5 “Onjuiste RSS-extensie”.

    Laten we eens kijken naar een voorbeeld dat duidelijk vergezocht is, maar gemakkelijk te begrijpen. We moeten een selectie maken uit twee databasetabellen die betrekking hebben op het werk van een bepaalde muziekgroep en een catalogus maken in de vorm van een XML-document. De ene databasetabel bevat informatie over de audio-opnamen van de band en de andere bevat informatie over boeken die aan hun werk zijn gewijd. Om de een of andere reden (het is niet duidelijk wat, maar erg belangrijk) moeten zowel de beschrijving van audio-opnamen als de beschrijving van boeken in het element “item” staan. Om dezelfde reden moeten zowel titels van berichten als boektitels in het element "title" voorkomen.

    Als resultaat krijgen we zoiets als dit:

    </item> <item> <title /> </item> </catalog> </p><p>Er is sprake van een naamconflict omdat het moeilijk is om te bepalen wat voor soort gegevens elk van de elementen "item" en "titel" bevat. Het eerste "item"-blok verwijst naar de discografie en het "title"-element bevat de titel van de schijf. Het tweede blok "item" verwijst naar de bibliografie en het element "title" bevat de titel van het boek. Om een ​​dergelijk conflict te voorkomen, moeten we deze groepen logisch scheiden. Dit gebeurt door een naamruimte op te geven: sommige elementen verwijzen naar de naam “muziek”, andere naar de naam “boek”. Om een ​​naamruimte te declareren, gebruikt u een attribuut waarvan de naam bestaat uit het gereserveerde woord “xmlns”, gevolgd door een dubbele punt en, in feite, de naam zelf:</p><p>Xmlns:music = "http://ininfo.biz/music"</p><p>De eerste vraag die opkomt is: wat moet ik gebruiken als de waarde van het attribuut “xmlns”? Om het unieke karakter van de naamruimte te garanderen, moet u een soort van, met andere woorden, een unieke string gebruiken die dit element * uniek identificeert. Veel mensen gebruiken de URL als identificatie, omdat de domeinnamen die in de URL worden gebruikt uniek zijn. Bovendien is het onwaarschijnlijk dat iemand anders dan de eigenaar het "http://ininfo.biz/book"-adres zal gebruiken, dus er is geen conflict.</p> <h3>Naamruimten voor elementen</h3> <p>Vóór het begin van de elementnaam wordt aangegeven tot welke naamruimte een element behoort, gescheiden door een dubbele punt:</p><p> <music:title /> </p><p>Op basis van het bovenstaande is het in principe mogelijk om voor elk element dat in het document wordt gebruikt een naamruimte te declareren:</p><p> <catalog> <music:item xmlns:music = "http://ininfo.biz/music"> <music:title xmlns:music = "http://ininfo.biz/music" /> </music:item xmlns:music = "http://ininfo.biz/music"> <book:item xmlns:book = "http://ininfo.biz/book"> <book:title xmlns:book = "http://ininfo.biz/book" /> </book:item xmlns:book = "http://ininfo.biz/book"> </catalog> </p><p>Mee eens, dit is niet de beste optie, omdat je eerst veel tekst moet typen; ten tweede is dergelijke code moeilijk te lezen; ten derde is het gemakkelijk om fouten te maken. Je kunt het op een andere manier doen met behulp van de regel:</p> <blockquote><p>De voor elk element gedeclareerde naamruimte geldt voor alle daarin geneste elementen, tenzij er andere naamruimten voor worden gedeclareerd.</p> </blockquote> <music:catalog xmlns:music = "http://ininfo.biz/music"> <music:item> <music:title /> </music:item> <book:item xmlns:book = "http://ininfo.biz/book"> <book:title /> </book:item> </music:catalog> <p>Je kunt het nog eenvoudiger doen: alle naamruimten in één keer declareren in het rootelement:</p><p> <music:catalog xmlns:music = "http://ininfo.biz/music" xmlns:book = "http://ininfo.biz/book"> <music:item> <music:title /> </music:item> <book:item> <book:title /> </book:item> </music:catalog> </p><p>Houd er echter rekening mee dat de identificatie van een naamruimte de waarde van het kenmerk “xmlns” is, en niet de voorvoegselnaam. In het volgende voorbeeld behoren alle elementen tot dezelfde ruimte (de attribuutwaarde is “http://ininfo.biz/group”), hoewel ze verschillende voorvoegsels hebben (“muziek” en “boek”):</p><p> <music:catalog xmlns:music = "http://ininfo.biz/group" xmlns:book = "http://ininfo.biz/group"> <music:item> <music:title /> </music:item> <book:item> <book:title /> </book:item> </music:catalog> </p><p>Het tegenovergestelde is ook mogelijk: elementen hebben verschillende naamruimten, maar gebruiken dezelfde voorvoegselnamen:</p><p> <catalog> <group:item xmlns:group = "http://ininfo.biz/music"> <group:title /> </group:item> <group:item xmlns:group = "http://ininfo.biz/book"> <group:title /> </group:item> </catalog> </p><p>U kunt het doen zonder voorvoegselnamen. Om dit te doen, moet u de standaardnaamruimte instellen. In dit geval wordt deze ruimte gebruikt voor het element waarin deze voorkomt en voor alle onderliggende (geneste) elementen:</p><p> <catalog> <item xmlns = "http://ininfo.biz/music"> <title /> </item> <item xmlns = "http://ininfo.biz/book"> <title /> </item> </catalog> </p><p>Om de standaard naamruimte te overschrijven, moet u het “xmlns” attribuut instellen op de lege string:</p><p> <catalog xmlns = "http://ininfo.biz/group"> <item> <title /> </item> <item xmlns = ""> <title /> </item> </catalog> </p><h3>Naamruimten voor elementattributen</h3> <p>Net als elementen kunnen hun attributen ook worden toegewezen aan een bepaalde naamruimte:</p><p> <music:catalog xmlns:music = "http://ininfo.biz/music" xmlns:book = "http://ininfo.biz/book"> <music:item music:number="10"> <music:title book:numref="20" /> </music:item> <book:item book:number="20"> <book:title music:numref="10" /> </book:item> </music:catalog> </p><p>De standaardnaamruimte is echter niet van toepassing op attributen. Als voor een attribuut geen voorvoegsel is opgegeven, behoort het tot geen enkele naamruimte:</p><p> <music:catalog xmlns:music = "http://ininfo.biz/music" xmlns:book = "http://ininfo.biz/book"> <music:item music:number="10"> <music:title numref="20" /> </music:item> <book:item book:number="20"> <book:title numref="10" /> </book:item> </music:catalog> </p><p>Het bovenstaande geldt ook als de naamruimte is opgegeven voor het element waartoe het attribuut behoort, bijvoorbeeld:</p><p> <music:item number="10" xmlns:music = "http://ininfo.biz/music"> </p><p>Om de zaken nog verwarrender te maken, werkt een naamruimtedeclaratie binnen de reikwijdte van het element waarin deze voorkomt:</p><p> <root xmlns:primer = "http://ininfo.biz/one"> <primer:el1 xmlns:primer = "http://ininfo.biz/two"> <primer:el2 /> <el3 xmlns:primer = "http://ininfo.biz/three"> <primer:el2 /> </el3> </primer:el1> <primer:el2 /> </root> </p><p>Mogelijk wordt dit artikel bijgewerkt. Wordt daarom vervolgd en blijf op de hoogte.</p> <p>* Voor een staatsburger van de Russische Federatie kan zijn TIN als een unieke identificatie worden beschouwd. Niet het paspoortnummer - het paspoort wordt drie keer gewijzigd en bij verlies wordt een nieuw uitgegeven.</p> <p>Annotatie: <span>In deze sectie wordt het gebruik en declaratie van naamruimten beschreven. De belangrijkste kenmerken van RDF, XML-Data, Document Content Description (DCD), Schema voor Object-Oriented XML (SOX), Document Definition Markup Language (DDML, voorheen bekend als XSchema) worden gegeven.</p><h3></h3><p>We hebben eerder enkele nadelen van DTD-definities beschreven; ze houden verband met:</p><ol><li>de syntaxis van deze definities verschilt van de syntaxis van XML (met name de zogenaamde uitgebreide <span>Backus-Naur-vorm</span>, Uitgebreid Backus Naur-formulier);</li> <li>deze definities zijn niet expressief genoeg;</li> <li>Omdat elke gebruiker zijn eigen tags kan maken, is het zeer waarschijnlijk dat mensen dezelfde elementnamen zullen gebruiken om naar verschillende dingen te verwijzen. Zelfs als de betekenissen van de elementen hetzelfde zijn, kan hun mogelijke inhoud variëren afhankelijk van de definitie. We hebben dus een manier nodig om specifiek gebruik van een element te definiëren, vooral als we verschillende soorten vocabulaires in hetzelfde document combineren. Om dit probleem aan te pakken heeft het W3C een specificatie uitgebracht met de naam XML Namespaces, waarmee u de context van een element in een naamruimte kunt definiëren.</li> <li>Er zijn situaties waarin het nodig is om XML-documenten uit verschillende bronnen te combineren die overeenkomen met verschillende DTD-definities. Deze situatie doet zich bijvoorbeeld voor bij het beschrijven van een grote hoeveelheid informatie, als individuele DTD's niet voldoende zijn om het hele volume te bestrijken of als ze moeilijk te begrijpen zijn. Het komt ook voor in e-commercesystemen wanneer u de gegevens van uw zakenpartner met die van u probeert te combineren. Er kan zich ook een situatie voordoen waarin u eenvoudigweg uw instellingen aan een bestaande DTD moet toevoegen om bepaalde informatie in een standaardformaat uit te wisselen. Helaas biedt de XML-aanbeveling geen manier om meerdere DTD's in één document te combineren zonder ze te wijzigen of een nieuwe DTD te maken (met behulp van externe referenties).</li> </ol><p>Dit hoofdstuk behandelt de volgende twee concepten: <span>naamruimte</span> en XML-schema's. Met naamruimten kunnen XML-ontwikkelaars een complex probleem in kleine stukjes opdelen en meerdere vocabulaires in één document combineren om het volledig te beschrijven. Met behulp van schema's creëren woordenboekontwerpers nauwkeurigere definities dan mogelijk was in DTD's, en doen dit met behulp van XML-syntaxis.</p><p>Deze twee tools helpen bij het oplossen van de complexe problemen die zich voordoen bij het gebruik van XML. Met naamruimten en schema's kunnen XML-ontwerpers en programmeurs:</p><ul><li>Woordenlijsten beter organiseren om complexe problemen op te lossen;</li> <li>Redden <span>sterk typen</span> gegevens tijdens transformaties van en naar XML;</li> <li>Beschrijf woordenschat nauwkeuriger en flexibeler dan mogelijk was met DTD;</li> <li>Lees woordenboekregels in XML en krijg toegang tot de definities zonder de parser ingewikkeld te maken.</li> </ul><h4>Woordenboeken mixen</h4><p>Bij het ontwerpen van een woordenboek kan het zinvol zijn om het mondiale probleem in verschillende delen op te delen. Dit vereist manieren om een ​​groot probleem in meerdere vocabulaires te segmenteren. Het echte probleem dat moet worden opgelost, is echter het samenvoegen van afzonderlijke DTD's binnen de hoofdtekst van één enkel document. Dit probleem kan zich ook voordoen als u bijvoorbeeld voor een bedrijf werkt waar hoogstwaarschijnlijk al een reeks DTD-definities bestaat en het gebruik ervan het werk enorm kan vergemakkelijken, omdat ze het probleem beschrijven zoals anderen het begrijpen. Vaak is het ook nuttig om DTD-definities te hergebruiken, d.w.z. Gebruikmaken van algemene constructies uit eerder gemaakte DTD-definities. Als je een applicatie ontwikkelt die moet communiceren met de software van een externe partner, heb je weinig andere keuze dan bestaande concepten te hergebruiken. De bestaande definities van DTD vormen een gemeenschappelijke taal die gesproken moet worden om begrepen te worden. Als er al een concept bestaat, moet je eraan werken om begrepen te worden in termen van dat concept.</p><p>Wanneer u definities gebruikt die voor u nuttig zijn uit de DTD's van andere ontwikkelaars, of wanneer u gesegmenteerde DTD's combineert om een ​​document te maken dat een complex probleem beschrijft, en uw documenten elementen met dezelfde namen gebruiken, loopt u het risico op problemen te stuiten dubbelzinnigheid en naambotsingen.</p><p>Het probleem wordt nog verergerd bij het gebruik van naaminstanties van meerdere DTD's. In dit geval weten we niet naar welk element welke DTD-definitie verwijst. Dit probleem van goed opgemaakte documenten wordt ambiguïteit genoemd. Bovendien, als de namen uit het document dit vereisen <span>geldigheidscontroles</span>, kunnen we onze applicatie erg verwarrend maken. Dit probleem wordt naambotsing genoemd.</p> <h4>Naamruimten</h4><p>Naamruimten kunnen de gebruiker op twee zeer belangrijke manieren helpen. Met hun hulp kunt u:</p><ul><li>documenten uit twee of meer bronnen combineren zonder het vertrouwen te verliezen dat het programma onderscheid maakt van welke bron een element of attribuut is overgenomen;</li> <li>Geef de user-agent indien mogelijk toegang tot verder materiaal, zoals een documenttypedefinitie (DTD) of een andere beschrijving van elementen en attributen.</li> </ul><p>Een naamruimte is een verzameling van bepaalde waarden of kenmerken die in XML-documenten gebruikt kunnen worden als namen van elementen of attributen. Naamruimten in XML worden gedefinieerd door een Uniform Resource Identifier (URI) (u kunt het DTD-adres op uw server als URI gebruiken). Hierdoor kan elke naamruimte uniek zijn.</p><p>Om naamruimten effectief te gebruiken in een document dat elementen uit verschillende bronnen combineert, moeten we dus het volgende definiëren:</p><ul><li>Een verwijzing naar een URI die het gebruik van het element beschrijft.</li> <li>Een alias waarmee we kunnen begrijpen uit welke naamruimte ons element komt. Deze alias heeft de vorm van een elementvoorvoegsel (als de alias voor een obscuur Book-element bijvoorbeeld catalog is, dan heet het element <catalog:Book> ).</li> </ul><h4>Naamruimten gebruiken en declareren</h4> <h5>Naamruimteverklaring</h5><p>Omdat in verschillende opmaaktalen - XML-implementaties - dezelfde namen van tags en hun attributen kunnen worden gevonden, met totaal verschillende betekenissen, is het noodzakelijk om op de een of andere manier onderscheid tussen deze te kunnen maken. Om dit te doen, krijgen de namen van tags en attributen een kort voorvoegsel, dat door een dubbele punt van de naam wordt gescheiden. Het naamvoorvoegsel is gekoppeld aan een ID die de naamruimte definieert. Alle tag- en attribuutnamen waarvan de voorvoegsels aan dezelfde identificatie zijn gekoppeld, vormen één enkele naamruimte, waarin de namen uniek moeten zijn.</p><p>Omdat we willen dat iedereen een naamruimtedeclaratie kan herkennen als we deze zien, reserveren we er een speciaal woord voor. Volgens de aanbeveling voor naamruimten is het woord xmlns . De waarde van het attribuut is een URI die de te gebruiken naamruimte specificeert. Dit is vaak de DTD-definitie-URL, maar dit hoeft niet altijd zo te zijn. Het voorvoegsel en de identificatie van de naamruimte worden als volgt gedefinieerd door het xmlns-attribuut:</p><p><ntb:notebook xmlns:ntb = "http://some.firm.com/2003/ntbml"></p><p>Zoals u kunt zien, is het ntb-voorvoegsel zojuist gedefinieerd, maar het kan al worden gebruikt in de naam ntb: notebook . In de toekomst worden de namen van tags en attributen die we willen toewijzen aan de naamruimte http://some.firm.com/2003/ntbml voorafgegaan door ntb, bijvoorbeeld:</p><p><ntb:city ntb:type="поселок">Gorelovo</ntb:city></p><p>Bovendien kunnen er meerdere naamruimten in één tag voorkomen. Hieronder ziet u een voorbeeld van het mixen van meerdere naamruimten:</p><p><catalog:book order:ISBN = "1-861003-11-0"></p><p>Het boekelement komt uit de catalogusnaamruimte en het ISBN-attribuut komt uit order .</p><p>Naam samen met een voorvoegsel, bijvoorbeeld</p><p>een uitgebreide, gekwalificeerde of gekwalificeerde naam genoemd (OName. Qualified Name). Het deel van de naam dat na de dubbele punt wordt geschreven, wordt het lokale deel van de naam genoemd.</p><p>De nomenclatuur van namen van webbronnen kan verwarrend zijn. Uniforme bronzoeker ( <span>Uniforme bronzoeker, URL</span>) geeft een bron aan in termen van toegangsprotocol en netwerklocatie. Uniforme bronidentificatie ( <span>Uniforme bronidentificatie, URI</span>) is een unieke naam voor een bepaalde bron. Beschouw een URI simpelweg als een unieke reeks tekens die een naamruimte identificeert.</p><p>Volgens de regels van SGML en XML kan een dubbele punt in namen als een gewoon teken worden gebruikt, dus een naam met een voorvoegsel is slechts een truc; elk programma dat de naamruimte niet 'kent' en het document parseert, behandelt het de gekwalificeerde naam als een gewone naam. Hieruit volgt met name dat in <span>documenttypeverklaring</span>(Document Type Declaration) naamvoorvoegsels mogen niet worden weggelaten.</p><p>Het xmlns-attribuut kan op elk XML-element voorkomen, niet alleen op het root-element. Het voorvoegsel dat het definieert, kan worden toegepast op het element waarin het xmlns-attribuut is geschreven en op alle elementen die daarin zijn genest. Bovendien kunnen meerdere naamruimten in één element worden gedefinieerd.</p><p>In geneste elementen kan de naamruimte worden overschreven door het voorvoegsel aan een andere ID te koppelen.</p><p>De weergave van een tagnaam zonder voorvoegsel in een document dat een naamruimte gebruikt, betekent dat de naam tot de standaardnaamruimte behoort.</p><p>Een goed ontworpen document moet naamruimten gebruiken voor al zijn elementen.</p><p>Voorvoegsels die beginnen met xml-tekens zijn in ieder geval gereserveerd voor de XML-taal zelf. Het xmlns-voorvoegsel wordt gebruikt om een ​​ander, gedefinieerd voorvoegsel te koppelen aan zijn naamruimte-ID. Het xmlns-voorvoegsel hoeft niet te worden gedefinieerd. Het wordt geïntroduceerd door de aanbeveling "Namespaces in XML" en wordt daar gekoppeld aan de naamruimte-ID <span>http://www.w3.ori/2000/xmlns/</span>.</p><p>Een ander voorvoegsel, xml, is in dezelfde aanbeveling gekoppeld aan de ID <span>http://www.w3.org/XML/1998/namespace</span>. Het hoeft ook niet in het XML-document te worden gedefinieerd. Er kan geen ander voorvoegsel aan deze ID's worden gekoppeld. Bewaar instructies om witruimtetekens intact te houden. Voor sommige teksten, zoals programmacodes, is dit belangrijk. De standaardwaarde laat witruimte over aan het oordeel van de handler.</p> <h5>Domein</h5><p>Naamruimtedeclaraties hebben een bereik, net als variabeledeclaraties in programmeertalen. Dit is belangrijk omdat naamruimten niet altijd aan het begin van het XML-document worden gedeclareerd; soms worden ze in volgende secties gedeclareerd. Een naamruimtedeclaratie is van toepassing op het element waarin het voorkomt, maar ook op de nakomelingen van dat element, zelfs als het daar niet expliciet is gedefinieerd. Een naam kan alleen naar een naamruimte verwijzen als deze binnen het bereik van de declaratie ervan wordt gebruikt.</p><p>We zullen echter ook naamruimtebereiken moeten combineren voor elementen die anders andere naamruimten zouden overnemen. In dit verband worden twee manieren gedefinieerd om de reikwijdte aan te geven: standaard en gekwalificeerd.</p> <h5>Standaardbereik</h5><p>Zoals je zou verwachten, wordt het al snel vervelend om elke naam in een document vooraf te moeten voegen. Door het concept van naambereik te introduceren, kunnen we in feite een groot aantal voorvoegsels in ons document combineren. Als we een standaardnaamruimte definiëren, wordt aangenomen dat deze eigenaar is van alle niet-gekwalificeerde namen binnen het bereik van de declaratie ervan. De standaardnaamruimte die in het hoofdelement is gedeclareerd, wordt dus beschouwd als de standaardnaam voor het hele document en kan alleen worden overschreven door een meer specifieke naamruimte die binnen het document is gedeclareerd.</p><p>Als u van een naamruimte de standaardnaamruimte voor een bereik wilt maken, kunt u eenvoudigweg de prefix-declaratie weglaten.</p><p>Als een voorvoegsel wordt gedeclareerd en vervolgens wordt gebruikt in combinatie met een naam, wordt de naamruimte expliciet vastgesteld. Als u een niet-gekwalificeerde naam aan een naamruimte wilt toewijzen, moet u een standaardruimte declareren die de niet-gekwalificeerde naam bevat (zonder het voorvoegsel).</p> <h5>Gekwalificeerd bereik</h5><p>De bovenstaande methode werkt goed als u uw naamruimten duidelijk kunt scheiden. Maar soms is het nodig om individuele namen uit externe naamruimten in een document op te nemen. In plaats van naamruimten voor een volledig bereik te declareren, kunt u gekwalificeerde namen gebruiken. Declareer de naamruimten die u nodig hebt aan het begin van het document en kwalificeer ze vervolgens op het gebruikspunt.</p> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> <div style="font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both"></div> </div> <footer> <div class="td-block-row td-post-next-prev"> <div class="td-block-span6 td-post-prev-post"> <div class="td-post-next-prev-content"><span>Vorig artikel</span><a href="https://redcomrade.ru/nl/internet/vse-draivera-wifi-skachivanie-i-ustanovka-draivera-dlya-wi-fi-adaptera-draiver-est/">Downloaden en installeren van het stuurprogramma voor de Wi-Fi-adapter</a></div> </div> <!-- /next_post --> <div class="td-next-prev-separator"></div> <div class="td-block-span6 td-post-next-post"> <div class="td-post-next-prev-content"><span>Volgend artikel</span><a href="https://redcomrade.ru/nl/winchesters/proshivka-android-samsung-s-pomoshchyu-odin-obnovlenie-proshivki/">Firmware bijwerken voor Samsung Galaxy-smartphones Firmware voorbereiden</a></div> <!-- /next_post --> </div> </div> <div class="td-author-name vcard author" style="display: none"><span class="fn"><a href="https://redcomrade.ru/nl/author/iulia">Julia</a></span></div> <span style="display: none;" itemprop="author" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Юлия"></span> <meta itemprop="datePublished" content="2016-05-16T15:47:37+00:00"> <meta itemprop="dateModified" content="2016-10-25T16:54:41+00:00"> <meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="/other/kak-zavyazat-galstuk-foto-poshagovo.html" /><span style="display: none;" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"><span style="display: none;" itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="//redcomrade.ru/wp-content/uploads/2017/01/logo-300x100.png"></span> <meta itemprop="name" content="Мой секрет"> </span> <meta itemprop="headline " content="Как завязать галстук пошагово фото"><span style="display: none;" itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="/wp-content/uploads/2016/05/1-19.jpg"><meta itemprop="width" content="640"><meta itemprop="height" content="450"></span> </footer> </article> <div class="td_block_wrap td_block_related_posts td_uid_3_5a236fb03c961_rand td_with_ajax_pagination td-pb-border-top td_block_template_1" data-td-block-uid="td_uid_3_5a236fb03c961" ><script>var block_td_uid_3_5a236fb03c961 = new tdBlock(); block_td_uid_3_5a236fb03c961.id = "td_uid_3_5a236fb03c961"; block_td_uid_3_5a236fb03c961.atts = '{ "limit":9,"sort":"","post_ids":"","tag_slug":"","autors_id":"","installed_post_types":"","category_id":"","category_ids":"","custom_title":"","custom_url":"","show_child_cat":"","sub_cat_ajax":"","ajax_pagination":"next_prev","header_color":"","header_text_color":"","ajax_pagination_infinite_stop":"","td_column_number":3,"td_ajax_preloading":"","td_ajax_filter_type":"td_custom_related","td_ajax_filter_ids":"","td_filter_default_txt":"\u0412\u0441\u0435","color_preset":"","border_top":"","class":"td_uid_3_5a236fb03c961_rand","el_class":"","offset":"","css":"","tdc_css":"","tdc_css_class":"td_uid_3_5a236fb03c961_rand","live_filter":"cur_post_same_categories","live_filter_cur_post_id":10046,"live_filter_cur_post_author":"694350","block_template_id":""} '; block_td_uid_3_5a236fb03c961.td_column_number = "3"; block_td_uid_3_5a236fb03c961.block_type = "td_block_related_posts"; block_td_uid_3_5a236fb03c961.post_count = "9"; block_td_uid_3_5a236fb03c961.found_posts = "26"; block_td_uid_3_5a236fb03c961.header_color = ""; block_td_uid_3_5a236fb03c961.ajax_pagination_infinite_stop = ""; block_td_uid_3_5a236fb03c961.max_num_pages = "3"; tdBlocksArray.push(block_td_uid_3_5a236fb03c961); </script><h4 class="td-related-title td-block-title"><a id="td_uid_4_5a236fb03e35d" class="td-related-left td-cur-simple-item" data-td_filter_value="" data-td_block_id="td_uid_3_5a236fb03c961" href="#">GERELATEERDE ARTIKELEN</a></h4><div id=td_uid_3_5a236fb03c961 class="td_block_inner"> <div class="td-related-row"> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/security/google-home-na-russkom-yazyke-kak-dobavit-ekspress-panel/" rel="bookmark" title="Hoe u een Express-paneel kunt toevoegen"><img width="218" height="150" class="entry-thumb" src="/uploads/d5329a9ee28a3e6e5ed3334b61876278.jpg" alt="Hoe u een Express-paneel kunt toevoegen" title="Hoe u een Express-paneel kunt toevoegen"/ loading=lazy loading=lazy></a></div> <a href="https://redcomrade.ru/nl/category/security/" class="td-post-category">Veiligheid</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/security/google-home-na-russkom-yazyke-kak-dobavit-ekspress-panel/" rel="bookmark" title="Hoe u een Express-paneel kunt toevoegen">Hoe u een Express-paneel kunt toevoegen</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/windows-7/kak-pomenyat-chastotu-na-mashinke-na-radioupravlenii-kak-izmenit-chastotu/" rel="bookmark" title="Hoe verander ik de frequentie van een radiografisch bestuurbare auto?"><img width="218" height="150" class="entry-thumb" src="/uploads/579ca754d7acf33ad5019cc61d994777.jpg" alt="Hoe verander ik de frequentie van een radiografisch bestuurbare auto?" title="Hoe verander ik de frequentie van een radiografisch bestuurbare auto?"/ loading=lazy loading=lazy></a></div> <a href="https://redcomrade.ru/nl/category/windows-7/" class="td-post-category">Windows 7</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/windows-7/kak-pomenyat-chastotu-na-mashinke-na-radioupravlenii-kak-izmenit-chastotu/" rel="bookmark" title="Hoe verander ik de frequentie van een radiografisch bestuurbare auto?">Hoe verander ik de frequentie van een radiografisch bestuurbare auto?</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/motherboard/po-izmenchivosti-informaciya-byvaet-ponyatie-informacii-razlichnye/" rel="bookmark" title="Het concept van informatie, de verschillende interpretaties ervan"><img width="218" height="150" class="entry-thumb" src="/uploads/9be6a34be55360957f89e99f901cfd5a.jpg" alt="Het concept van informatie, de verschillende interpretaties ervan" title="Het concept van informatie, de verschillende interpretaties ervan"/ loading=lazy loading=lazy></a></div> <a href="https://redcomrade.ru/nl/category/motherboard/" class="td-post-category">Moederborden</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/motherboard/po-izmenchivosti-informaciya-byvaet-ponyatie-informacii-razlichnye/" rel="bookmark" title="Het concept van informatie, de verschillende interpretaties ervan">Het concept van informatie, de verschillende interpretaties ervan</a></h3> </div> </div> </div> </div> <div class="td-related-row"> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/case/razdelit-listy-v-pdf-razdelenie-pdf-na-stranicy-onlain-ispolzovanie/" rel="bookmark" title="PDF online in pagina's splitsen"><img width="218" height="150" class="entry-thumb" src="/uploads/7f17b3c835e9e2b8a804d9a42d9f09d0.jpg" alt="PDF online in pagina's splitsen" title="PDF online in pagina's splitsen"/ loading=lazy loading=lazy></a></div> <a href="https://redcomrade.ru/nl/category/case/" class="td-post-category">Behuizingen</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/case/razdelit-listy-v-pdf-razdelenie-pdf-na-stranicy-onlain-ispolzovanie/" rel="bookmark" title="PDF online in pagina's splitsen">PDF online in pagina's splitsen</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/motherboard/tehnologiya-hls-http-live-streaming-luchshie-recepty-kogda-zhe-ispolzovat-hls-dlya/" rel="bookmark" title="HTTP Live Streaming: beste recepten"><img width="218" height="150" class="entry-thumb" src="/uploads/99049048056874811a51bc0949a7e993.jpg" alt="HTTP Live Streaming: beste recepten" title="HTTP Live Streaming: beste recepten"/ loading=lazy loading=lazy></a></div> <a href="https://redcomrade.ru/nl/category/motherboard/" class="td-post-category">Moederborden</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/motherboard/tehnologiya-hls-http-live-streaming-luchshie-recepty-kogda-zhe-ispolzovat-hls-dlya/" rel="bookmark" title="HTTP Live Streaming: beste recepten">HTTP Live Streaming: beste recepten</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/security/gde-otobrazhaetsya-login-v-skaipe-kak-i-kakoi-sozdat-login-v-skaipe-rabochie-niki/" rel="bookmark" title="Hoe en wat u een login op Skype maakt"><img width="218" height="150" class="entry-thumb" src="/uploads/fc2ba82014da1f081e22dc66eb97600b.jpg" alt="Hoe en wat u een login op Skype maakt" title="Hoe en wat u een login op Skype maakt"/ loading=lazy loading=lazy></a></div> <a href="https://redcomrade.ru/nl/category/security/" class="td-post-category">Veiligheid</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/security/gde-otobrazhaetsya-login-v-skaipe-kak-i-kakoi-sozdat-login-v-skaipe-rabochie-niki/" rel="bookmark" title="Hoe en wat u een login op Skype maakt">Hoe en wat u een login op Skype maakt</a></h3> </div> </div> </div> </div> <div class="td-related-row"> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/power-supplies/kak-gde-vzyat-yuin-v-aske-kak-poluchit-novyi-uin-dlya-aski-kak/" rel="bookmark" title="Hoe u een nieuwe UIN voor ICQ kunt krijgen"><img width="218" height="150" class="entry-thumb" src="/uploads/dffa63dc694d0c5a6ccb0ffd017013db.jpg" alt="Hoe u een nieuwe UIN voor ICQ kunt krijgen" title="Hoe u een nieuwe UIN voor ICQ kunt krijgen"/ loading=lazy loading=lazy></a></div> <a href="https://redcomrade.ru/nl/category/power-supplies/" class="td-post-category">Voedingen</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/power-supplies/kak-gde-vzyat-yuin-v-aske-kak-poluchit-novyi-uin-dlya-aski-kak/" rel="bookmark" title="Hoe u een nieuwe UIN voor ICQ kunt krijgen">Hoe u een nieuwe UIN voor ICQ kunt krijgen</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/internet/pochemu-pri-podklyuchenii-pk-ne-vidit-telefon-xiaomi-xiaomi-ne-vidit/" rel="bookmark" title="Xiaomi ziet de computer niet, redenen, oplossingen Telefoon ziet de computer niet: controleer vanaf pc"><img width="218" height="150" class="entry-thumb" src="/uploads/e1c00a701c93e4eea99b9dfeffcace29.jpg" alt="Xiaomi ziet de computer niet, redenen, oplossingen Telefoon ziet de computer niet: controleer vanaf pc" title="Xiaomi ziet de computer niet, redenen, oplossingen Telefoon ziet de computer niet: controleer vanaf pc"/ loading=lazy loading=lazy></a></div> <a href="https://redcomrade.ru/nl/category/internet/" class="td-post-category">Internet</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/internet/pochemu-pri-podklyuchenii-pk-ne-vidit-telefon-xiaomi-xiaomi-ne-vidit/" rel="bookmark" title="Xiaomi ziet de computer niet, redenen, oplossingen Telefoon ziet de computer niet: controleer vanaf pc">Xiaomi ziet de computer niet, redenen, oplossingen Telefoon ziet de computer niet: controleer vanaf pc</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/motherboards/ustanovka-tem-na-miui-temy-iz-storonnih-istochnikov-ne-podderzhivayutsya-v/" rel="bookmark" title="“Thema's van bronnen van derden worden niet ondersteund” in MIUI: hoe je het verbod kunt omzeilen"><img width="218" height="150" class="entry-thumb" src="/uploads/d1ea1873f631c0ebdb7447affc7590ea.jpg" alt="“Thema's van bronnen van derden worden niet ondersteund” in MIUI: hoe je het verbod kunt omzeilen" title="“Thema's van bronnen van derden worden niet ondersteund” in MIUI: hoe je het verbod kunt omzeilen"/ loading=lazy loading=lazy></a></div> <a href="https://redcomrade.ru/nl/category/motherboards/" class="td-post-category">Moederborden</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/motherboards/ustanovka-tem-na-miui-temy-iz-storonnih-istochnikov-ne-podderzhivayutsya-v/" rel="bookmark" title="“Thema's van bronnen van derden worden niet ondersteund” in MIUI: hoe je het verbod kunt omzeilen">“Thema's van bronnen van derden worden niet ondersteund” in MIUI: hoe je het verbod kunt omzeilen</a></h3> </div> </div> </div> </div></div></div> </div> </div> <div class="td-pb-span4 td-main-sidebar"> <div class="td-ss-main-sidebar"> <aside class="widget �lambda_169101"> <div style="margin:10px 0"> </div> </aside> <div class="td_block_wrap td_block_1 td_block_widget td_uid_2_5a23c04f0cdc0_rand td-pb-border-top td_block_template_1 td-column-1" data-td-block-uid="td_uid_2_5a23c04f0cdc0"> <div class="td-block-title-wrap"> <h4 class="block-title"><span class="td-pulldown-size">Wij raden aan</span></h4> </div> <div id=td_uid_2_5a23c04f0cdc0 class="td_block_inner"> <div class="td-block-span12"> <div class="td_module_4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/processors/kakaya-strana-proizvodit-soni-iksperiya-istoriya-kompanii-sony-zolotoi-period/" rel="bookmark" title="In welk land wordt Sony Xperia geproduceerd?"><img width="324" height="235" class="entry-thumb" src="/uploads/c703476d6b9da2fac2c2f3d5adbb3637.jpg" alt="In welk land wordt Sony Xperia geproduceerd?" title="In welk land wordt Sony Xperia geproduceerd?"/ loading=lazy loading=lazy></a></div> <a href="https://redcomrade.ru/nl/category/processors/" class="td-post-category">Verwerkers</a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/processors/kakaya-strana-proizvodit-soni-iksperiya-istoriya-kompanii-sony-zolotoi-period/" rel="bookmark" title="In welk land wordt Sony Xperia geproduceerd?">In welk land wordt Sony Xperia geproduceerd?</a></h3> <div class="td-module-meta-info"> </div> <div class="td-excerpt">Slogan: make.belive Aan de oorsprong van veel wereldberoemde bedrijven stonden twee mensen, van wie de één een getalenteerde ingenieur was, de ander...</div> </div> <!-- /next_post --> </div> <div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/other/kak-uznat-skolki-razryadnaya-windows-10-chto-takoe-razryadnost/" rel="bookmark" title="Wat is Windows-bitdiepte?"><img width="100" height="70" class="entry-thumb" src="/uploads/558e22bf18372f6dc54a0fba6735ec1c.jpg" alt="Wat is Windows-bitdiepte?" title="Wat is Windows-bitdiepte?"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/other/kak-uznat-skolki-razryadnaya-windows-10-chto-takoe-razryadnost/" rel="bookmark" title="Wat is Windows-bitdiepte?">Wat is Windows-bitdiepte?</a></h3> <div class="td-module-meta-info"> <a href="https://redcomrade.ru/nl/category/other/" class="td-post-category">Ander</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/processors/avtomatizaciya-s-poster-effektivnoe-reshenie-dlya-malogo-i-srednego-biznesa-poster/" rel="bookmark" title="Poster Professioneel account Prijzen en installatie"><img width="100" height="70" class="entry-thumb" src="/uploads/aaa288d7b622e1b8986f13d86aef40cc.jpg" alt="Poster Professioneel account Prijzen en installatie" title="Poster Professioneel account Prijzen en installatie"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/processors/avtomatizaciya-s-poster-effektivnoe-reshenie-dlya-malogo-i-srednego-biznesa-poster/" rel="bookmark" title="Poster Professioneel account Prijzen en installatie">Poster Professioneel account Prijzen en installatie</a></h3> <div class="td-module-meta-info"> <a href="https://redcomrade.ru/nl/category/processors/" class="td-post-category">Verwerkers</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/windows-7/luchshie-naushniki-s-aliexpress-luchshie-besprovodnye-bluetooth-naushniki-iz-kitaya-luchshie/" rel="bookmark" title="De beste draadloze Bluetooth-hoofdtelefoons uit China De beste goedkope hoofdtelefoons van AliExpress"><img width="100" height="70" class="entry-thumb" src="/uploads/9d65a3e7dc933943f1423500e22dccc4.jpg" alt="De beste draadloze Bluetooth-hoofdtelefoons uit China De beste goedkope hoofdtelefoons van AliExpress" title="De beste draadloze Bluetooth-hoofdtelefoons uit China De beste goedkope hoofdtelefoons van AliExpress"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/windows-7/luchshie-naushniki-s-aliexpress-luchshie-besprovodnye-bluetooth-naushniki-iz-kitaya-luchshie/" rel="bookmark" title="De beste draadloze Bluetooth-hoofdtelefoons uit China De beste goedkope hoofdtelefoons van AliExpress">De beste draadloze Bluetooth-hoofdtelefoons uit China De beste goedkope hoofdtelefoons van AliExpress</a></h3> <div class="td-module-meta-info"> <a href="https://redcomrade.ru/nl/category/windows-7/" class="td-post-category">Windows 7</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/monitors/otkryvaem-faily-cdw-chto-takoe-rasshirenie-faila-cwd-cdw-chem-otkryt/" rel="bookmark" title="Wat is de CWD-bestandsextensie?"><img width="100" height="70" class="entry-thumb" src="/uploads/298acbeaa04bf3190e19904e89d44315.jpg" alt="Wat is de CWD-bestandsextensie?" title="Wat is de CWD-bestandsextensie?"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/monitors/otkryvaem-faily-cdw-chto-takoe-rasshirenie-faila-cwd-cdw-chem-otkryt/" rel="bookmark" title="Wat is de CWD-bestandsextensie?">Wat is de CWD-bestandsextensie?</a></h3> <div class="td-module-meta-info"> <a href="https://redcomrade.ru/nl/category/monitors/" class="td-post-category">Monitoren</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/windows-8/kak-zapisat-faily-na-disk-kak-zapisat-faily-na-disk-sozdanie/" rel="bookmark" title="Bestanden op schijf branden Een reservekopie maken"><img width="100" height="70" class="entry-thumb" src="/uploads/8145e1c728ecc80978ed69b0dd9a777f.jpg" alt="Bestanden op schijf branden Een reservekopie maken" title="Bestanden op schijf branden Een reservekopie maken"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/windows-8/kak-zapisat-faily-na-disk-kak-zapisat-faily-na-disk-sozdanie/" rel="bookmark" title="Bestanden op schijf branden Een reservekopie maken">Bestanden op schijf branden Een reservekopie maken</a></h3> <div class="td-module-meta-info"> <a href="https://redcomrade.ru/nl/category/windows-8/" class="td-post-category">Windows 8</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/graphics-card/pk-32-bitnaya-sistema-razryadnosti-processorov-i-operacionnyh/" rel="bookmark" title="Bitgroottes van processors en besturingssystemen"><img width="100" height="70" class="entry-thumb" src="/uploads/f816b3804abf77ea309a27988dfb26a7.jpg" alt="Bitgroottes van processors en besturingssystemen" title="Bitgroottes van processors en besturingssystemen"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/graphics-card/pk-32-bitnaya-sistema-razryadnosti-processorov-i-operacionnyh/" rel="bookmark" title="Bitgroottes van processors en besturingssystemen">Bitgroottes van processors en besturingssystemen</a></h3> <div class="td-module-meta-info"> <a href="https://redcomrade.ru/nl/category/graphics-card/" class="td-post-category">Videokaarten</a> </div> </div> </div> </div> </div> </div> </div> <aside class="widget_text td_block_template_1 widget widget_custom_html"> <div class="textwidget custom-html-widget"> </div> </aside> </div> </div> </div> </div> </div> <div class="td-footer-wrapper td-container-wrap "> <div class="td-container"> <div class="td-pb-row"> <div class="td-pb-span12"> </div> </div> <div class="td-pb-row"> <div class="td-pb-span4"> <div class="td_block_wrap td_block_15 td_block_widget td_uid_11_5a23980e76adb_rand td-pb-border-top td_block_template_1 td-column-1 td_block_padding" data-td-block-uid="td_uid_11_5a23980e76adb" > <div class="td-block-title-wrap"></div><div id=td_uid_11_5a23980e76adb class="td_block_inner td-column-1"><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/other/nastroika-tipovyh-i-vneshnih-otchetov-nastroika-tipovyh-i/" rel="bookmark" title="Standaard- en externe rapporten instellen Rapportinstellingen opslaan"><img width="218" height="150" class="entry-thumb" src="/uploads/54a5639a0838c8ee7ae85746ce732363.jpg" alt="Standaard- en externe rapporten instellen Rapportinstellingen opslaan" title="Standaard- en externe rapporten instellen Rapportinstellingen opslaan"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/other/nastroika-tipovyh-i-vneshnih-otchetov-nastroika-tipovyh-i/" rel="bookmark" title="Standaard- en externe rapporten instellen Rapportinstellingen opslaan">Standaard- en externe rapporten instellen Rapportinstellingen opslaan</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/graphics-card/windows-7-ustanovka-rezhime-sovmestimosti-reshenie-problem-sovmestimosti-programm/" rel="bookmark" title="Proplossen"><img width="218" height="150" class="entry-thumb" src="/uploads/2358577d09b75b49d2ad6aa709047d39.jpg" alt="Proplossen" title="Proplossen"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/graphics-card/windows-7-ustanovka-rezhime-sovmestimosti-reshenie-problem-sovmestimosti-programm/" rel="bookmark" title="Proplossen">Proplossen</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/internet/vse-draivera-wifi-skachivanie-i-ustanovka-draivera-dlya-wi-fi-adaptera-draiver-est/" rel="bookmark" title="Downloaden en installeren van het stuurprogramma voor de Wi-Fi-adapter"><img width="218" height="150" class="entry-thumb" src="/uploads/2bec1fac06554fbe87b96e0e604309f6.jpg" alt="Downloaden en installeren van het stuurprogramma voor de Wi-Fi-adapter" title="Downloaden en installeren van het stuurprogramma voor de Wi-Fi-adapter"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/internet/vse-draivera-wifi-skachivanie-i-ustanovka-draivera-dlya-wi-fi-adaptera-draiver-est/" rel="bookmark" title="Downloaden en installeren van het stuurprogramma voor de Wi-Fi-adapter">Downloaden en installeren van het stuurprogramma voor de Wi-Fi-adapter</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/winchesters/proshivka-android-samsung-s-pomoshchyu-odin-obnovlenie-proshivki/" rel="bookmark" title="Firmware bijwerken voor Samsung Galaxy-smartphones Firmware voorbereiden"><img width="218" height="150" class="entry-thumb" src="/uploads/611c236f35f0454069026f9310109c7c.jpg" alt="Firmware bijwerken voor Samsung Galaxy-smartphones Firmware voorbereiden" title="Firmware bijwerken voor Samsung Galaxy-smartphones Firmware voorbereiden"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/winchesters/proshivka-android-samsung-s-pomoshchyu-odin-obnovlenie-proshivki/" rel="bookmark" title="Firmware bijwerken voor Samsung Galaxy-smartphones Firmware voorbereiden">Firmware bijwerken voor Samsung Galaxy-smartphones Firmware voorbereiden</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/security/google-home-na-russkom-yazyke-kak-dobavit-ekspress-panel/" rel="bookmark" title="Hoe u een Express-paneel kunt toevoegen"><img width="218" height="150" class="entry-thumb" src="/uploads/d5329a9ee28a3e6e5ed3334b61876278.jpg" alt="Hoe u een Express-paneel kunt toevoegen" title="Hoe u een Express-paneel kunt toevoegen"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/security/google-home-na-russkom-yazyke-kak-dobavit-ekspress-panel/" rel="bookmark" title="Hoe u een Express-paneel kunt toevoegen">Hoe u een Express-paneel kunt toevoegen</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/windows-7/kak-pomenyat-chastotu-na-mashinke-na-radioupravlenii-kak-izmenit-chastotu/" rel="bookmark" title="Hoe verander ik de frequentie van een radiografisch bestuurbare auto?"><img width="218" height="150" class="entry-thumb" src="/uploads/579ca754d7acf33ad5019cc61d994777.jpg" alt="Hoe verander ik de frequentie van een radiografisch bestuurbare auto?" title="Hoe verander ik de frequentie van een radiografisch bestuurbare auto?"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/windows-7/kak-pomenyat-chastotu-na-mashinke-na-radioupravlenii-kak-izmenit-chastotu/" rel="bookmark" title="Hoe verander ik de frequentie van een radiografisch bestuurbare auto?">Hoe verander ik de frequentie van een radiografisch bestuurbare auto?</a></h3> </div> </div> </div></div></div> <div class="clearfix"></div> </div> <div class="td-pb-span4"> <div class="td_block_wrap td_block_15 td_block_widget td_uid_12_5a23980e79990_rand td-pb-border-top td_block_template_1 td-column-1 td_block_padding" data-td-block-uid="td_uid_12_5a23980e79990" > <div class="td-block-title-wrap"></div><div id=td_uid_12_5a23980e79990 class="td_block_inner td-column-1"><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/motherboard/po-izmenchivosti-informaciya-byvaet-ponyatie-informacii-razlichnye/" rel="bookmark" title="Het concept van informatie, de verschillende interpretaties ervan"><img width="218" height="150" class="entry-thumb" src="/uploads/9be6a34be55360957f89e99f901cfd5a.jpg" alt="Het concept van informatie, de verschillende interpretaties ervan" title="Het concept van informatie, de verschillende interpretaties ervan"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/motherboard/po-izmenchivosti-informaciya-byvaet-ponyatie-informacii-razlichnye/" rel="bookmark" title="Het concept van informatie, de verschillende interpretaties ervan">Het concept van informatie, de verschillende interpretaties ervan</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/case/razdelit-listy-v-pdf-razdelenie-pdf-na-stranicy-onlain-ispolzovanie/" rel="bookmark" title="PDF online in pagina's splitsen"><img width="218" height="150" class="entry-thumb" src="/uploads/7f17b3c835e9e2b8a804d9a42d9f09d0.jpg" alt="PDF online in pagina's splitsen" title="PDF online in pagina's splitsen"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/case/razdelit-listy-v-pdf-razdelenie-pdf-na-stranicy-onlain-ispolzovanie/" rel="bookmark" title="PDF online in pagina's splitsen">PDF online in pagina's splitsen</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/motherboard/tehnologiya-hls-http-live-streaming-luchshie-recepty-kogda-zhe-ispolzovat-hls-dlya/" rel="bookmark" title="HTTP Live Streaming: beste recepten"><img width="218" height="150" class="entry-thumb" src="/uploads/99049048056874811a51bc0949a7e993.jpg" alt="HTTP Live Streaming: beste recepten" title="HTTP Live Streaming: beste recepten"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/motherboard/tehnologiya-hls-http-live-streaming-luchshie-recepty-kogda-zhe-ispolzovat-hls-dlya/" rel="bookmark" title="HTTP Live Streaming: beste recepten">HTTP Live Streaming: beste recepten</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/security/gde-otobrazhaetsya-login-v-skaipe-kak-i-kakoi-sozdat-login-v-skaipe-rabochie-niki/" rel="bookmark" title="Hoe en wat u een login op Skype maakt"><img width="218" height="150" class="entry-thumb" src="/uploads/fc2ba82014da1f081e22dc66eb97600b.jpg" alt="Hoe en wat u een login op Skype maakt" title="Hoe en wat u een login op Skype maakt"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/security/gde-otobrazhaetsya-login-v-skaipe-kak-i-kakoi-sozdat-login-v-skaipe-rabochie-niki/" rel="bookmark" title="Hoe en wat u een login op Skype maakt">Hoe en wat u een login op Skype maakt</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/power-supplies/kak-gde-vzyat-yuin-v-aske-kak-poluchit-novyi-uin-dlya-aski-kak/" rel="bookmark" title="Hoe u een nieuwe UIN voor ICQ kunt krijgen"><img width="218" height="150" class="entry-thumb" src="/uploads/dffa63dc694d0c5a6ccb0ffd017013db.jpg" alt="Hoe u een nieuwe UIN voor ICQ kunt krijgen" title="Hoe u een nieuwe UIN voor ICQ kunt krijgen"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/power-supplies/kak-gde-vzyat-yuin-v-aske-kak-poluchit-novyi-uin-dlya-aski-kak/" rel="bookmark" title="Hoe u een nieuwe UIN voor ICQ kunt krijgen">Hoe u een nieuwe UIN voor ICQ kunt krijgen</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/internet/pochemu-pri-podklyuchenii-pk-ne-vidit-telefon-xiaomi-xiaomi-ne-vidit/" rel="bookmark" title="Xiaomi ziet de computer niet, redenen, oplossingen Telefoon ziet de computer niet: controleer vanaf pc"><img width="218" height="150" class="entry-thumb" src="/uploads/e1c00a701c93e4eea99b9dfeffcace29.jpg" alt="Xiaomi ziet de computer niet, redenen, oplossingen Telefoon ziet de computer niet: controleer vanaf pc" title="Xiaomi ziet de computer niet, redenen, oplossingen Telefoon ziet de computer niet: controleer vanaf pc"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/internet/pochemu-pri-podklyuchenii-pk-ne-vidit-telefon-xiaomi-xiaomi-ne-vidit/" rel="bookmark" title="Xiaomi ziet de computer niet, redenen, oplossingen Telefoon ziet de computer niet: controleer vanaf pc">Xiaomi ziet de computer niet, redenen, oplossingen Telefoon ziet de computer niet: controleer vanaf pc</a></h3> </div> </div> </div></div></div> <div class="clearfix"></div> </div> <div class="td-pb-span4"> <div class="td_block_wrap td_block_15 td_block_widget td_uid_13_5a23980e7caa8_rand td-pb-border-top td_block_template_1 td-column-1 td_block_padding" data-td-block-uid="td_uid_13_5a23980e7caa8" > <div class="td-block-title-wrap"></div><div id=td_uid_13_5a23980e7caa8 class="td_block_inner td-column-1"><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/motherboards/ustanovka-tem-na-miui-temy-iz-storonnih-istochnikov-ne-podderzhivayutsya-v/" rel="bookmark" title="“Thema's van bronnen van derden worden niet ondersteund” in MIUI: hoe je het verbod kunt omzeilen"><img width="218" height="150" class="entry-thumb" src="/uploads/d1ea1873f631c0ebdb7447affc7590ea.jpg" alt="“Thema's van bronnen van derden worden niet ondersteund” in MIUI: hoe je het verbod kunt omzeilen" title="“Thema's van bronnen van derden worden niet ondersteund” in MIUI: hoe je het verbod kunt omzeilen"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/motherboards/ustanovka-tem-na-miui-temy-iz-storonnih-istochnikov-ne-podderzhivayutsya-v/" rel="bookmark" title="“Thema's van bronnen van derden worden niet ondersteund” in MIUI: hoe je het verbod kunt omzeilen">“Thema's van bronnen van derden worden niet ondersteund” in MIUI: hoe je het verbod kunt omzeilen</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/processors/kakaya-strana-proizvodit-soni-iksperiya-istoriya-kompanii-sony-zolotoi-period/" rel="bookmark" title="In welk land wordt Sony Xperia geproduceerd?"><img width="218" height="150" class="entry-thumb" src="/uploads/22d10576783defe30b3631a52e84a679.jpg" alt="In welk land wordt Sony Xperia geproduceerd?" title="In welk land wordt Sony Xperia geproduceerd?"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/processors/kakaya-strana-proizvodit-soni-iksperiya-istoriya-kompanii-sony-zolotoi-period/" rel="bookmark" title="In welk land wordt Sony Xperia geproduceerd?">In welk land wordt Sony Xperia geproduceerd?</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/other/kak-uznat-skolki-razryadnaya-windows-10-chto-takoe-razryadnost/" rel="bookmark" title="Wat is Windows-bitdiepte?"><img width="218" height="150" class="entry-thumb" src="/uploads/344be8009a2d9eb7a8e5d46543aa0e47.jpg" alt="Wat is Windows-bitdiepte?" title="Wat is Windows-bitdiepte?"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/other/kak-uznat-skolki-razryadnaya-windows-10-chto-takoe-razryadnost/" rel="bookmark" title="Wat is Windows-bitdiepte?">Wat is Windows-bitdiepte?</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/processors/avtomatizaciya-s-poster-effektivnoe-reshenie-dlya-malogo-i-srednego-biznesa-poster/" rel="bookmark" title="Poster Professioneel account Prijzen en installatie"><img width="218" height="150" class="entry-thumb" src="/uploads/787a328ede9bada13659be671e29ae22.jpg" alt="Poster Professioneel account Prijzen en installatie" title="Poster Professioneel account Prijzen en installatie"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/processors/avtomatizaciya-s-poster-effektivnoe-reshenie-dlya-malogo-i-srednego-biznesa-poster/" rel="bookmark" title="Poster Professioneel account Prijzen en installatie">Poster Professioneel account Prijzen en installatie</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/windows-7/luchshie-naushniki-s-aliexpress-luchshie-besprovodnye-bluetooth-naushniki-iz-kitaya-luchshie/" rel="bookmark" title="De beste draadloze Bluetooth-hoofdtelefoons uit China De beste goedkope hoofdtelefoons van AliExpress"><img width="218" height="150" class="entry-thumb" src="/uploads/ca302af2ac8b8ba888132a90f0d669b0.jpg" alt="De beste draadloze Bluetooth-hoofdtelefoons uit China De beste goedkope hoofdtelefoons van AliExpress" title="De beste draadloze Bluetooth-hoofdtelefoons uit China De beste goedkope hoofdtelefoons van AliExpress"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/windows-7/luchshie-naushniki-s-aliexpress-luchshie-besprovodnye-bluetooth-naushniki-iz-kitaya-luchshie/" rel="bookmark" title="De beste draadloze Bluetooth-hoofdtelefoons uit China De beste goedkope hoofdtelefoons van AliExpress">De beste draadloze Bluetooth-hoofdtelefoons uit China De beste goedkope hoofdtelefoons van AliExpress</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://redcomrade.ru/nl/monitors/otkryvaem-faily-cdw-chto-takoe-rasshirenie-faila-cwd-cdw-chem-otkryt/" rel="bookmark" title="Wat is de CWD-bestandsextensie?"><img width="218" height="150" class="entry-thumb" src="/uploads/ab6af9869e684e98cbe29e95b56a2f7b.jpg" alt="Wat is de CWD-bestandsextensie?" title="Wat is de CWD-bestandsextensie?"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://redcomrade.ru/nl/monitors/otkryvaem-faily-cdw-chto-takoe-rasshirenie-faila-cwd-cdw-chem-otkryt/" rel="bookmark" title="Wat is de CWD-bestandsextensie?">Wat is de CWD-bestandsextensie?</a></h3> </div> </div> </div></div></div> <div class="clearfix"></div><aside class="td_block_template_1 widget widget_text"> <div class="textwidget"> </div> </aside><aside class="td_block_template_1 widget widget_text"> <div class="textwidget"> </div> </aside> </div> </div> </div> </div> <div class="td-sub-footer-container td-container-wrap "> <div class="td-container"> <div class="td-pb-row"> <div class="td-pb-span td-sub-footer-menu"> </div> <div class="td-pb-span td-sub-footer-copy">Copyright 2024 - Computer- en laptopreparatie. Videokaarten, harde schijven, internet, monitoren.</div> </div> </div> </div> </div> <style type="text/css" media="screen"> /* custom css theme panel */ .td-post-header .entry-title { font-weight: normal !important; } h1.entry-title { font-weight: normal !important; border-bottom:#c44c4c 2px dotted; } h1.entry-title:before { content: "\f184"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .sf-menu ul .td-menu-item > a:hover, .sf-menu ul .sfHover > a, .sf-menu ul .current-menu-ancestor > a, .sf-menu ul .current-category-ancestor > a, .sf-menu ul .current-menu-item > a { color: #edf3f7; } .td-post-content h2 { border-bottom:#c44c4c 2px dotted;} .td-post-content h2:before { content: "\f184"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .td-post-content h3 { border-bottom:#c44c4c 2px dotted;} .td-post-content h3:before { content: "\f103"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .category-my .td-page-title { color:#c44c4c; font-weight: 400; font-size: 36px; } .post header .entry-title { line-height: 40px; } .td-category-description h2, .td-category-description h3 { color:#c44c4c;} .td-category-description h2 { border-bottom:#c44c4c 2px solid;} .td-category-description h2:before { content: "\f055"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .td-category-description h3 { border-bottom:#c44c4c 2px solid;} .td-category-description h3:before { content: "\f103"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .td-category-description ol, .td-category-description ul { margin-top:20px !important; margin-bottom:20px !important;} .td-category-description ul, .td-post-content ul { padding:0; margin:0; list-style:none; clear:both;} .td-category-description ul li, .td-post-content ul li { padding:0 0 0 15px; margin:0 0 10px 35px; position:relative;} .td-category-description ul li:before, .td-post-content ul li:before { content: "\f192"; font-family: "FontAwesome"; color:#c44c4c; position:absolute; left:-10px;} .td-category-description ol, .td-post-content ol { padding:0; margin:0 0 0 5px; list-style:none; counter-reset: lipoint; clear:both;} .td-category-description ol li, .td-post-content ol li { padding:0 0 0 15px; margin:0 0 10px 35px; position:relative;} .td-category-description ol li:before, .td-post-content ol li:before { content: counter(lipoint); counter-increment: lipoint; color:#fff; position:absolute; left:-16px; background:#c44c4c; width:20px; height:20px; line-height:20px; text-align:center; -webkit-border-radius: 20px;border-radius: 20px; font-size:12px; top:3px;} .toc_list li:before { display:none} .td-header-style-9 .td-header-menu-wrap-full { /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#c44c4c+0,c10000+100 */ background: #c44c4c; /* Old browsers */ background: -moz-linear-gradient(top, #c44c4c 0%, #c10000 100%); /* FF3.6-15 */ background: -webkit-linear-gradient(top, #c44c4c 0%,#c10000 100%); /* Chrome10-25,Safari5.1-6 */ background: linear-gradient(to bottom, #c44c4c 0%,#c10000 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c44c4c', endColorstr='#c10000',GradientType=0 ); /* IE6-9 */ } .sf-menu > li > a { color: #fff; } .td-header-style-9 .header-search-wrap .td-icon-search { color: #fff; } .td-affix a { color:#000 !important;} </style> <script type='text/javascript'> /* <![CDATA[ */ var tocplus = { "smooth_scroll":"1"} ; /* ]]> */ </script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/plugins/table-of-contents-plus/front.min.js'></script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/plugins/wp-postratings/js/postratings-js.js'></script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/themes/Newspaper/js/tagdiv_theme.js'></script> <script type='text/javascript' src='/wp-includes/js/comment-reply.min.js'></script> <script type='text/javascript'> /* <![CDATA[ */ var boxzilla_options = { "testMode":"","boxes":[]} ; /* ]]> */ </script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/plugins/boxzilla/assets/js/script.min.js'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js'></script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/plugins/simple-lightbox/client/js/prod/lib.core.js'></script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/plugins/simple-lightbox/client/js/prod/lib.view.js'></script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/plugins/simple-lightbox/themes/baseline/js/prod/client.js'></script> <script type='text/javascript' src='/assets/client1.js'></script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/plugins/simple-lightbox/template-tags/item/js/prod/tag.item.js'></script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/plugins/simple-lightbox/template-tags/ui/js/prod/tag.ui.js'></script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/plugins/simple-lightbox/content-handlers/image/js/prod/handler.image.js'></script> <script> (function(){ var html_jquery_obj = jQuery('html'); if (html_jquery_obj.length && (html_jquery_obj.is('.ie8') || html_jquery_obj.is('.ie9'))) { var path = '/wp-content/themes/Newspaper/style.css'; jQuery.get(path, function(data) { var str_split_separator = '#td_css_split_separator'; var arr_splits = data.split(str_split_separator); var arr_length = arr_splits.length; if (arr_length > 1) { var dir_path = '/wp-content/themes/Newspaper'; var splited_css = ''; for (var i = 0; i < arr_length; i++) { if (i > 0) { arr_splits[i] = str_split_separator + ' ' + arr_splits[i]; } //jQuery('head').append('<style>' + arr_splits[i] + '</style>'); var formated_str = arr_splits[i].replace(/\surl\(\'(?!data\:)/gi, function regex_function(str) { return ' url(\'' + dir_path + '/' + str.replace(/url\(\'/gi, '').replace(/^\s+|\s+$/gm,''); } ); splited_css += "<style>" + formated_str + "</style>"; } var td_theme_css = jQuery('link#td-theme-css'); if (td_theme_css.length) { td_theme_css.after(splited_css); } } } ); } } )(); </script> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html>