Where do I change doc type definitions used by Content Importer?

We want to be able to use the varref/varid properties for uicontrol and wintitle tags. I have updated the DTD in InfoShare\Web\Author\ASP\DocTypes. I can now assign this property to uicontrol and wintitle tags in our editor (Oxygen). However, when I try to import content with Content Importer that has these properties, I get an invalid XML error. Is there something else I need to configure to make this customization work with Content Importer?

Parents
  • Hi Cobina,

    Customer Support or PS are better in guiding you through this, also making sure that your configuration is maintanable across product upgrades.

    1. Can we assume that Oxygen and Content Importer are on the same client machine? They should by default share the same Synchronized DocTypes folder (the synchronization box you see appear while logging in in a Client Tool)?
    2. What is the exact error? Is it a client-side error? or a server-side web services error? A screenshot or some log files are appreciated?
    3. Also a product version really helps, it is the shortest string of information that tells how a system is supposed to behave.
    4. Can you upload a file with success using the Web Client (ISHCM)?
    5. Do you have more than one application server, did they all receive your configuration changes?

    -Dave

  • Thanks for the reply! I had created an issue with SDL support, and they were unable to help me. They suggested that I reach out to the Community to see if there was a known solution before going the Professional Services route. In response to your questions:

    1. Yes, Oxygen and Content Importer are on the same client machine. How do I determine the Synchronized DocTypes folder? Is this the information that is shown after I make a change to the DTD? Do I have to make a change to show it?

    2. The error that I am seeing is a client-side error. I am attaching screen shots and logs.

    3. I am using Tridion 14.0.3 (Version 14.0.4730.3)

    4. I didn't think to try that! Yes, I am able to upload the files with the Web Client. Unfortunately, since the Batch Upload feature is gone in Tridion, I would have to upload each one individually, and there are a lot.

    5. I am running in a single-server configuration.

  • Hey Cobina,

    The error message you are getting is actually coming from the server. When you create content, the plugin "ValidateDTD" is checking if the content is valid according to the DTDS. In this case the topic "Add a Compound (SCIEX OS)" using ID GUID-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx is not valid.

    It seems you are trying to import content into the Dev environment. So a quick test would be to (in Dev):

    1. Locate version 2 of "Add a Compound (SCIEX OS)" using ID GUID-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

    2. Create version 3 of the topic

    3. Check-out the topic using Oxygen.

    4. try adding the Varref attribute on uicontrol and wintitle

    5. If you do have the option in Oxygen to add it, try checking in. My expectation is that you have the same error message.

    - If you are able to use the Varref/VarID attribute in Production, it seems that there are changes not copied over to Development. 

    - If you haven't tested it in production, it could be that there is an issue with the DTD that the Varref/VarID attribute is not declared correctly on wintitle or uicontrol 

     

     

     

Reply
  • Hey Cobina,

    The error message you are getting is actually coming from the server. When you create content, the plugin "ValidateDTD" is checking if the content is valid according to the DTDS. In this case the topic "Add a Compound (SCIEX OS)" using ID GUID-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx is not valid.

    It seems you are trying to import content into the Dev environment. So a quick test would be to (in Dev):

    1. Locate version 2 of "Add a Compound (SCIEX OS)" using ID GUID-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

    2. Create version 3 of the topic

    3. Check-out the topic using Oxygen.

    4. try adding the Varref attribute on uicontrol and wintitle

    5. If you do have the option in Oxygen to add it, try checking in. My expectation is that you have the same error message.

    - If you are able to use the Varref/VarID attribute in Production, it seems that there are changes not copied over to Development. 

    - If you haven't tested it in production, it could be that there is an issue with the DTD that the Varref/VarID attribute is not declared correctly on wintitle or uicontrol 

     

     

     

Children
  • Thanks for your reply!

    I have spent some time with SDL support, and we confirmed that Content Importer does not use the customized DTD definitions, while both Oxygen and the web client do. We turned off the ValidateDTD property for XML Write Plug-In Settings, and then the Content Importer did import the content.

    So, I do have a workaround, albeit a risky one. The topics I am trying to import were exported from Tridion, so they were valid. However, we are running scripts on them before reimporting. Hopefully the scripts don't corrupt the topics! We are testing this on our Development server to see if any issues arise.  

  • Hey Cobina

    Disabling the validateDTD can be dangerous as we dont want invalid content in the repository. I do think I know what is going on. 

    When using content importer, it changes the doctype definition

    from: <!DOCTYPE topic PUBLIC "-//OASIS//DTD DITA Topic//EN" "topic.dtd">

    to: <!DOCTYPE topic PUBLIC "-//SDL//DTD DITA Topic//EN" "sdlTopic.dtd">

    The reason for this is that new content we import into the CMS can then use the Dita1.3 DTDS. Since Dita1.3 is backwards compatible, any content that is imported is still valid.

    In this case, you changed the dita1.2 dtds (topic.dtd) but that change is not available in "SDLTopic.DTD", and therefore we see the error message "invalid content"

    There are 2 options to resolve this:

    1. Disable the option "convertDocumentTypes" in content importer:

    Disabling this option, will tell content Importer not to change the Doctype declaration from the original one, to Dita 1.3

    1. Rightclick on the start menu > Run > Enter : %localappdata%\sdl\InfoShare Client\14.0
    2. Edit the file "Trisoft.ContentImporter.config"
    3. Locate line 25: <convertDocumentTypes>
    4. Change the option from True to False
    5. Save the file

    Note: after changing this setting, you need to delete the contents that are stored in the the conversion folder (out Folder)

    2. Change the SDL DTDS:

    You can also apply the same change to the SDL DTDS, similar as what you have done for the OASIS DTDS. That way you can still use dita1.3 for new content and you can use the Varref/VarID attribute on wintitle or uicontrol 

    Hopefully this helps.

  • Thanks so much, Jered! That helps a lot!

    Using the first option, I was able to import content into our database. I haven't tried the second option yet, but I will try that this week.

  • Jered, I have tried the second method, and it doesn't seem to work.

    1. I turned the <convertDocumentTypes> option back on. 

    2. I updated the DTD .

    3. I opened the mod file in C:\Users\cobina.pricejones\AppData\Local\SDL\InfoShare Client\0624292488\Config\DocTypes\dita-oasis\1.2\technicalContent\dtd to confirm that the DTD change was sync'd to my local computer. I will attach the mod file. Please see the <uicontrol> section.

    4. I ran Content Importer. I got the same validation error as before.

    5. I opened the topic in the out folder, and verified the doctype: <!DOCTYPE task PUBLIC "-//SDL//DTD DITA Task//EN" "task.dtd"[]>. 

    On the other hand, the first method works fine, so I have a good solution.

    Thanks, again!